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