我正在动态创建一个表格,其中每个单元格中都包含一个文本框。该表被放置在一个占位符控件中。一切都完美显示。问题是当我去检索单元格中输入的值时。我有代码在一个名为 CreateTable() 的单独方法中生成表。为了让我的程序在保存时在占位符中找到一个表,我必须在回发事件和 PageLoad 事件中运行 CreateTable()。如果我只在其中一个地方调用 CreateTable() 并尝试保存,则表示占位符为空,因此我无法保存文本框内容。我尝试从 InitLoad 调用 CreateTable() 但这不起作用,因为它需要引用来自三个静态控件的值:1 个下拉列表、1 个列表框和 1 个日历控件,我不这样做' 不相信已经呈现了他们的视图状态。有人有想法么?不必为了完成这项工作而将数据库调用次数翻倍肯定会很好。
问问题
1126 次
1 回答
0
欢迎来到 ViewState 和动态控件的精彩世界 :-)
如果同时使用(ViewState 和动态控件),则必须在每个请求中重新创建控件,因为需要它们来重新创建 ViewState。将您的代码拆分为控件创建代码(CreateTable?)和填充控件的代码(FillTable?)。控件创建代码的最佳位置是 PageInit 事件。这是必须在每个请求中运行的代码部分。将其他代码放在您需要的任何地方(Postback?、LoadEvent?)。这部分代码必须运行一次。在此之后,它是 ViewState 的一部分。
如果您的代码的控件创建部分取决于 ViewState(静态控件的值),那么您将遇到更大的麻烦。您无法访问 PageInit 中的 ViewState!使用另一种存储方法(SessionState?)来保存此信息并重定向到您自己的页面。
于 2010-06-06T09:00:14.140 回答