private IEnumerable getResolvedDataSource(object source)
{
if (source is IEnumerable)
return (IEnumerable)source;
else if (source is IList)
return (IEnumerable)source;
else if (source is DataSet )
return (IEnumerable)(((DataSet)source).Tables[0].DefaultView);
else if (source is DataTable)
return (IEnumerable)(((DataTable)source).DefaultView);
else
return null;
}
////用来存放数据的ArrayList,这个也配合ViewState使用
private ArrayList cacheList = new ArrayList();
/// <summary>
/// 处理DataBinding事件,把数据源中需要的数据加到一个ArrayList中。
/// </summary>
/// <param name="e">EventArgs</param>
protected override void OnDataBinding(EventArgs e)
{
base.OnDataBinding(e);
try
{
if (this.dataSource != null)
{
IEnumerable source = this.getResolvedDataSource(this.dataSource);
IEnumerator item = source.GetEnumerator();
if (this.cacheList.Count == 0)
{
//循环遍历集合
while (item.MoveNext())
{
object ite = item.Current;
cacheList.Add(((DataRowView )ite).Row[0] );
}
}
}
}
catch
{
throw new Exception("请输入三个字段的名称");
}
}
我通过一个集合存储了数据源的一行数据,这一行数据只有三个字段,我怎么才能将这三个字段的值依次读出来并存到cacheList中?代码应该怎么写?请帮我看下吧!谢谢啦!
关注
创建一个实体类