【问题标题】:GridView.Databind() not working with object listGridView.Databind() 不适用于对象列表
【发布时间】:2012-09-18 17:55:03
【问题描述】:

我遇到的问题是:我有一个带有列表对象的 GridView 作为其数据源,它绑定没有问题。我有一个 DropDownList,其中包含事件SelectedIndexChanged,并且通过此事件,我向列表中添加了一个新对象,添加后我想做一个GridView1.Databind(),因此新对象出现在 GridView 中。

但这不起作用,在我执行GridView1.Databind() 之后,来自 GridView 的数据会丢失。它甚至显示EmptyDataText,但如果我刷新页面,一切都会出现。此外,DropDownList 使用对象列表作为 DataSource 并且应该使用 DropDownList1.Databind() 但它也不起作用。它在 DataBinding 之后具有相同的数据,我至少要纠正 DropDownList 是设置DropDownList again manually.DataTextField = object.attribute1DropDownList.DataValueField = object.attribute2。但是对于 GridView 我被卡住了,有人可以解释DataBind 方法如何处理对象列表吗?

【问题讨论】:

  • 你将 GridView 绑定到什么?
  • 到对象列表,没有问题,它正确显示所有数据,唯一的问题是尝试刷新它
  • 你能发布一些你的代码吗?

标签: c# asp.net list object gridview


【解决方案1】:

要刷新绑定到列表的asp:GridView,首先设置gridView.DataSource 属性。

 gridView.DataSource = mylist;
 gridView.DataBind();

对于非数据库数据,这意味着列表本身必须保存在会话变量或 ViewState 中。

【讨论】:

  • 每次我需要做gridView.Databind()我需要这样做吗?我已经在PageLoad() 中做到了这一点。在使用此列表之前,我的系统使用 MySqlDataSource,但现在出于安全原因我们使用 ADO.net,并且使用 MySqlDataSource 您只需关联一次 GridView 的 DataSource。顺便说一句,感谢您对此的回答。
  • 我与 MySqlDataSource 打赌您使用的是 DataSourceID 属性。实际上,它只需要分配一次。另一方面,DataSource 是不可持久的,每次回发都将其设置回 null
  • 就是这样,谢谢你的回答,刚刚创建了一个名为GridView2Databind()的方法,其中包含这两行,因为我创建对象列表的代码来自一个类e来调用它我需要使用GridView2.DataSource = emit_bo.GetEmitenteTipo(Convert.ToInt32(GridView1.SelectedValue)); 每次我需要进行数据绑定时,我都不容易写下所有这些。请注意,代码有点复杂,因为一个 gridview 依赖于另一个,没有发布任何与之相关的内容,因为认为它会变得难以理解。
【解决方案2】:

我记得很久以前就有这个问题。我猜问题是您在 UpdatePanel 中没有 GridView。

如果是这种情况,GridView 不会立即刷新并显示更改。下拉菜单的位置有些棘手(我认为它也必须在面板中),但我相信您可以通过 UpdatePanel 上的一些快速搜索找到它。

【讨论】:

  • 感谢推荐,不知道这个更新面板,很有用,但没修好
猜你喜欢
  • 2020-03-21
  • 2021-05-23
  • 2022-11-15
  • 1970-01-01
  • 2020-04-30
  • 2023-03-03
  • 2021-07-01
  • 2021-04-28
  • 2017-12-08
相关资源
最近更新 更多