【问题标题】:Dataset manually put into the viewstate of a Web UserControl not kept after postback数据集手动放入回发后未保留的 Web UserControl 的视图状态
【发布时间】:2010-02-03 00:32:28
【问题描述】:

我创建了一个在设计时放置在页面上的 Web 用户控件。它的目的是弹出用户要从中选择的项目网格。所以我有一个gridview。而用户控件中的这段代码:

    Public Property DataTable() As Data.DataTable
    Get
        If Not IsNothing(ViewState("_SelectGridDataTable")) Then
            Return ViewState("_SelectGridDataTable")
        Else
            Return Nothing
        End If
    End Get
    Set(ByVal value As Data.DataTable)
        ViewState("_SelectGridDataTable") = value
    End Set
End Property

所以当用户点击页面上的一个按钮时,我把这个放在页面上的代码中:

SelectGrid2.DataTable = GetContacts().Tables(0)
SelectGrid2.Show()

这很好用。网格弹出(使用 jQuery)并显示网格。问题是,当用户单击 UserControl 上的“确定”按钮时,ViewState("_SelectGridDataTable") 总是什么都没有。我不明白,因为它处于视图状态..?!?那么这里的视图状态不是真的意味着视图状态吗?

【问题讨论】:

  • 您在页面生命周期的哪个位置调用此属性?
  • 页面已经加载好了。用户单击一个按钮(位于更新面板中)。然后我运行“SelectGrid2.DataTable, SelectGrid2.Show()”命令。
  • 不要忘记在 ViewState 中存储 DataSets/DataTables 会对您的页面性能产生负面影响。如果可能,您应该考虑使用 Session 来存储 DataSet。如果您想更好地了解原因,请参阅以下内容:dotnetjohn.com/articles.aspx?articleid=71

标签: asp.net datatable user-controls viewstate


【解决方案1】:

哎呀。我没有意识到在 Page_Init 期间视图状态不存在。我将数据表的检查移至页面加载,现在它可以工作了。感谢@Michel 给了我检查的想法..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    相关资源
    最近更新 更多