好的,在这个问题上取得了相当大的进展,但需要有高级ASP技能的人的协助。我使用后台代码用SQL查询的结果填充一个ASP表。只读值存储在一些表格单元格的.text
中,而读写值存储在文本框控件(动态创建并添加到表格单元格中)的.text
中。
这在第一次加载时运行良好。当使用不同的查询重新加载页面时(例如:用户选择了不同的列进行排序),表格单元格值重新正确填充,而文本框值保持不变。在查询之前抛出table.rows.clear()
似乎并不能解决这个问题。
更多信息:
- 我创建了一个使用
table.findcontrol()
擦除所有textbox.text
值的方法。当绑定到按钮时,此方法可以正常工作(这表明findcontrol能够查找/更新文本框),尽管所有受影响的文本框在重新加载页面时仍保持空白。如果放置在页面加载中,该方法什么也不做(文本框保留其先前的值)。在调试模式下,findcontrol在按钮上使用时提取一个值,但在添加到页面加载时显示为空。我已经完成了table.rows.clear()
的注释和未注释。 - 我也试图把所有的代码扔进
oninit
。这似乎没有任何明显的区别。
必须在每个页面请求上添加动态控件,最好是在Init
事件期间。听起来你并没有按时重建它们。
将它们添加到每个单独的页面请求中,作为页面生命周期的一部分,它们将从viewstate
为了使动态控件保持其值,您需要:
)。确保页面的Viewstate是启用的。b。)在每次页面加载时重新创建控件,确保创建的控件具有与最初提供给控件的相同的id。此外,您需要在加载视图状态之前执行此操作(最好是在Onit或PreInit方法中)。在这里查看页面生命周期:http://msdn.microsoft.com/en-us/library/ms178472%28v=vs.100%29.aspx