【问题标题】:gridView.DataSource as DataTable is setting a null in asp.net作为 DataTable 的 gridView.DataSource 在 asp.net 中设置为空
【发布时间】:2012-07-31 12:06:15
【问题描述】:

我正在将我的 gridview.datasource 设置为一个数据表变量,如下所示:

DataTable dt = gvPaymentHistory.DataSource as DataTable;  

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

编辑

DataSource 是一个类对象的 List 集合。这不是数据集

【问题讨论】:

    标签: c# asp.net gridview datasource


    【解决方案1】:

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

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

    检索时

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

    希望这能解决您的问题。

    【讨论】:

    • 这会起作用,但是,大小写不正确 - 尝试发布语法正确的代码: ViewState["mydatasource"] = yourdatasource;和 DataTable dt = ViewState["mydatasource"] as DataTable
    【解决方案2】:

    试试这个方法:使用BindingSource

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

    【讨论】:

      【解决方案3】:

      编辑

      如果投标类型是列表而不是尝试

      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;
      

      【讨论】:

      • Winforms中是否使用了BindingSource?
      • @DotNetRookie = asp.net 的一部分
      • @PranayRana 使用什么命名空间来获取 BindingSource?我收到错误消息(“缺少 using 指令或程序集引用”)
      • if(gvPaymentHistory.DataSource is DataTable) // 返回 false;
      • @DotNetRookie 这意味着它不是数据表或数据视图只是检查您绑定的数据源类型...
      猜你喜欢
      • 2015-01-11
      • 1970-01-01
      • 2013-02-10
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 2012-09-12
      • 1970-01-01
      相关资源
      最近更新 更多