📄 databoundstate.cs
字号:
using System;
using System.Web;
using System.Web.UI;
using System.Collections;
namespace myControls {
[ParseChildren(true)]
public class DataBoundState : Control {
private IEnumerable _dataSource;
private ITemplate _itemTemplate;
public IEnumerable DataSource {
get {
return _dataSource;
}
set {
_dataSource = value;
}
}
protected override void OnDataBinding(EventArgs e) {
IEnumerator objDataEnum;
DataBoundStateItem objItem;
int intCounter=0;
if (DataSource!=null) {
Controls.Clear();
ClearChildViewState();
objDataEnum = DataSource.GetEnumerator();
while (objDataEnum.MoveNext()) {
objItem = new DataBoundStateItem( objDataEnum.Current );
ItemTemplate.InstantiateIn( objItem );
Controls.Add( objItem );
intCounter++;
}
ViewState["NumItems"] = intCounter;
ChildControlsCreated = true;
}
}
protected override void CreateChildControls() {
object objNumItems;
int intItemCount;
DataBoundStateItem objItem;
objNumItems = ViewState["NumItems"];
if (objNumItems != null) {
Controls.Clear();
intItemCount = (int)objNumItems;
for (int i=0;i<intItemCount;i++) {
objItem = new DataBoundStateItem(null);
ItemTemplate.InstantiateIn( objItem );
Controls.Add( objItem );
}
}
}
[TemplateContainer(typeof(DataBoundStateItem))]
public ITemplate ItemTemplate {
get {
return _itemTemplate;
}
set {
_itemTemplate = value;
}
}
}
public class DataBoundStateItem : Control, INamingContainer {
private object _DataItem;
public DataBoundStateItem( object DataItem ) : base() {
_DataItem = DataItem;
}
public object DataItem {
get {
return _DataItem;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -