【问题标题】:Accessing GridView's ViewState访问 GridView 的 ViewState
【发布时间】:2013-01-06 23:39:17
【问题描述】:

我有什么:

我有一个没有分页的 GridView。在包含页面的 Page_Load 处理程序中,我从表存储中读取用户特定的值并将它们存储在一个集合中,以便 ObjectDataSource 的 SelectMethod 可以获取它们。

我想要什么:

当用户从 GridView 所在的同一页面上传一些新数据时,我希望 GridView 在旧数据之外显示新数据,而无需再次查询存储。

有用的东西:

Page_Load 处理程序中的 IsPostback 有助于避免在数据仍处于 ViewState 中时进行查询。用户点击上传按钮后,由于我猜是 GridView 的 ViewState,他仍然可以看到旧数据。

我的尝试:

我尝试从 GridView 派生并制作自己的用户控件,以便访问返回 StateBag 但无法找到其中显示的用户数据的 ViewState 属性。它仅显示 DataSourceID、_!ItemCount 等内容。

我的问题:

如何从 GridView 访问 ViewState,以便从后面的代码中检索列值或 DataKeyName 值等数据。

其他信息:

does gridview save data in viewstate? 问题的答案表明 GridView 将其数据保存在其 ViewState 中。

【问题讨论】:

    标签: asp.net viewstate dataview


    【解决方案1】:

    您绝对不想访问 GridView 的视图状态。这是控件的内部实现细节,可能随时更改。

    您只需在设置新数据后在 GridView 上调用DataBind(),控件就会显示更新后的数据。

    【讨论】:

    • @user764754 你能发布一些你所做的事情吗?但听起来你只需要再次绑定它。
    • 如果我只设置新数据,GridView 将不会显示任何其他内容。如果我 DataBind 新数据,来自 ViewState 的旧数据会丢失。因为我不想在 PostBack 发生时进行新查询,所以我只有代码中的新数据,而旧数据隐藏在 GridView 的 ViewState 中(来自初始 Page_Load)。明天我会发布代码,谢谢。
    • 您可能没有访问 GridView 的 ViewState 是对的。我现在的解决方案是自己将查询到的数据存储在页面ViewState中。此 ViewState 用于在 PostBacks 期间获取旧数据。修改旧数据,然后调用 DataBind() 并相应更新页面的 ViewState。我还在 GridView 上设置了 EnableViewState="False" 以避免将我的数据存储在页面的 ViewState 和 GridView 的 ViewState 中。此解决方法有效。我认为我现在不必发布旧代码;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    相关资源
    最近更新 更多