gridView.DataSource作为DataTable在asp.net中设置为null

时间:2012-08-02 13:47:16

标签: c# asp.net gridview datasource

我将gridview.datasource设置为数据表变量,如下所示:

DataTable dt = gvPaymentHistory.DataSource as DataTable;  

gvPaymentHistory.DataSource有一条记录,但是该行执行后dt为null。如何将数据源记录传递给dt?

修改

DataSource是类对象的List集合。它不是DataSet

3 个答案:

答案 0 :(得分:2)

简单的方法是在将数据绑定到网格时将视图源中的网格数据源存储在视图源中,然后在每次需要时从视图源中检索它。

Gridview.Datasource = yourdatasource;
ViewState["mydatasource"] = yourdatasource;

检索时

DataTable dt = ViewState["mydatasource"] as DataTable;

希望这能解决你的问题。

答案 1 :(得分:0)

修改

如果绑定类型是列表,则尝试

List<CodeEntity> data= gvPaymentHistory.DataSource as List<CodeEntity>;

   List<CodeEntity> codes = (List<CodeEntity>)gvPaymentHistory.DataSource; 

检查这个

if(gvPaymentHistory.DataSource is DataTable)
   DataTable dt = gvPaymentHistory.DataSource as DataTable;
if(gvPaymentHistory.DataSource is DataView )
    DataView dv = gvPaymentHistory.DataSource as DataView;

答案 2 :(得分:0)

尝试这种方式:使用BindingSource

BindingSource bs = (BindingSource)gvPaymentHistory.DataSource;
DataTable dt =((YourDataSetType) (bs.DataSource)).Tables[0];