用 DataReader 填充 DataTable

一、引言

Repeater 绑定到 DataReader是一种常用高效的数据绑定形式。有时可使用ASP.NET2.0的数据源控件(DataSource),但感觉不够灵活。
在一般情况下,Repeater与DataReader直接绑定就行:

SqlDataReader dr = new  SqlUtility.ExecuteReader(...);
repeater.DataSource
= dr;
repeater.DataBind();

但有的时候,如做二级分类时repeater数据绑定的同时,DropDownList也要绑定到同样的数据源,直接用DataReader不得不再次读取数据,如果DataReader读取的数据保存到DataTable就可以实现N次绑定。

二、实现

1、直接用DataReader填充DataTable
代码如下:

        //飘遥:http://blog.csdn.net/zxjay
        public  DataTable DataReaderToDataTable(IDataReader reader)
        {           
            DataTable tb 
=   new  DataTable();
            DataColumn col;
            DataRow row;
            
int  i;

            
for  (i  =   0 ; i  <  reader.FieldCount; i ++ )
            {
                col 
=   new  DataColumn();
                col.ColumnName 
=  reader.GetName(i);
                col.DataType 
=  reader.GetFieldType(i);
                tb.Columns.Add(col);
            }

            
while  (reader.Read())
            {
                row 
=  tb.NewRow();
                
for  (i  =   0 ; i  <  reader.FieldCount; i ++ )
                {
                    row[i] 
=  reader[i];
                }
                tb.Rows.Add(row);
            }
            
return  tb;
        }

2、ASP.NET2.0有更简单的方法:

DataTable dt = new  DataTable();
dt.Load(IDataReader);

一条语句搞定。
DataTable.Load(...)的具体实现可以参看开源的Mono项目(http://www.go-mono.com)。
文件位置:(mono-1.2.4/mcs/class/System.Data/System.Data/DataTable.cs)

3、总结:

无^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值