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

Posted

技术标签:

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

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

DataTable dt = gvPaymentHistory.DataSource as DataTable;  

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

编辑

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

【问题讨论】:

【参考方案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 这意味着它不是数据表或数据视图只是检查您绑定的数据源类型...

以上是关于作为 DataTable 的 gridView.DataSource 在 asp.net 中设置为空的主要内容,如果未能解决你的问题,请参考以下文章

将列数据作为超链接(dataTable JQUERY)

如何在 BLToolkit 中将 DataTable 作为参数传递?

Plotly Dash:选择 DataTable 中的行作为回调输出 + 过滤器

如何通过不提交当前会话事务将 DataTable 作为参数传递给存储过程?

C# 使用带有 where 子句的 Linq 查询作为 dataTable 上的变量

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