📄 databindsample.cs
字号:
using System;
using System.Collections;
using System.Web;
using System.Web.UI;
namespace myControl {
[
ParseChildren(true)
]
public class DataBindSample : Control, INamingContainer {
private ITemplate _itemTemplate = null;
private ICollection _dataSource = null;
public ICollection DataSource {
get {
return _dataSource;
}
set {
_dataSource = value;
}
}
[
TemplateContainer(typeof(RepeatItem))
]
public ITemplate ItemTemplate {
get {
return _itemTemplate;
}
set {
_itemTemplate = value;
}
}
protected override void AddParsedSubObject(object o) {
}
// 重载的CreateChildControls方法用于创建子控件
protected override void CreateChildControls() {
object o = ViewState["NumItems"];
if (o != null) {
// 清空Controls集合
Controls.Clear();
int numItems = (int)o;
for (int i=0; i < numItems; i++) {
//创建重复的选项
RepeatItem item = new RepeatItem(i, null);
ItemTemplate.InstantiateIn(item);
// 在Controls集合中添加选项
Controls.Add(item);
}
}
}
// 重载以使用DataSource创建子控件
protected override void OnDataBinding(EventArgs e) {
base.OnDataBinding(e);
if (DataSource != null) {
Controls.Clear();
// 删除已经有的视图状态
ClearChildViewState();
// 使用数据源来创建子控件
IEnumerator dataEnum = DataSource.GetEnumerator();
int i = 0;
while(dataEnum.MoveNext()) {
RepeatItem item = new RepeatItem(i, dataEnum.Current);
ItemTemplate.InstantiateIn(item);
Controls.Add(item);
i++;
}
ChildControlsCreated = true;
ViewState["NumItems"] = i;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -