【发布时间】: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