0

好的,在这一点上已经走了很远,但需要具有出色 ASP 技能的人的帮助。我正在使用后面的代码来使用 SQL 查询的结果填充 ASP 表。只读值存储在.text某些表格单元格中,而读写值存储在.text文本框控件中(动态创建并添加到表格单元格中。)

这在第一次加载时工作正常。当页面使用不同的查询重新加载时(例如:用户选择不同的列进行排序),表格单元格值会正确重新填充,而文本框值保持不变。在查询之前抛出一个table.rows.clear()似乎并不能解决这个问题。

更多信息:

  • 我创建了一种方法来textbox.text使用table.findcontrol(). 当绑定到按钮时,此方法适用于规范(这表明 findcontrol 能够查找/更新文本框),但如果重新加载页面,所有受影响的文本框仍保持空白。如果放置在页面加载中,该方法什么也不做(文本框保留它们以前的值。)在调试模式下,findcontrol 在按钮上使用时会提取一个值,但在添加到页面加载时会返回 null。我已经用table.rows.clear()评论和未评论的方式做到了这一点。
  • 我还尝试将所有代码放入oninit. 这似乎没有任何明显的区别。
4

2 回答 2

2

必须在每个页面请求上添加动态控件,最好在Init事件期间添加。听起来您没有按时重新创建它们。

在每个页面请求中添加它们,作为页面生命周期的一部分,它们将从viewstate

于 2013-01-14T22:29:53.677 回答
0

为了使动态控件保留其值,您需要:

a.) 确保为页面启用 Viewstate。b.) 在每次页面加载时重新创建控件,确保您创建的控件具有与最初赋予控件相同的 ID。您还需要在加载视图状态之前执行此操作(最好在 Onit 或 PreInit 方法中。请参阅此处的页面生命周期:http: //msdn.microsoft.com/en-us/library/ms178472%28v=vs.100 %29.aspx

于 2013-01-14T22:32:55.787 回答