ASP .Net - 更改/更新动态创建的文本框

时间:2013-01-14 22:14:13

标签: c# asp.net code-behind

好的,在这个方面做得很好,但是需要具有优秀ASP技能的人的帮助。我正在使用代码来填充ASP表以及SQL查询的结果。只读值存储在某些表格单元格的.text中,而读写值存储在.text文本框控件中(动态创建并添加到表格单元格中。)

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

更多信息:

  • 我创建了一种使用textbox.text擦除所有table.findcontrol()值的方法。绑定到按钮时,此方法适用于规范(指示findcontrol能够查找/更新文本框),但如果重新加载页面,则所有受影响的文本框仍为空白。如果置于页面加载中,则该方法不执行任何操作(文本框保留其以前的值。)在调试模式下,findcontrol在按钮上使用时会拉取一个值,但在添加到pageload时会显示为null。我使用table.rows.clear()评论和取消评论完成了此操作。
  • 我还尝试将所有代码都放入oninit。这似乎没有任何明显的区别。

2 个答案:

答案 0 :(得分:2)

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

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

接收它们的值

答案 1 :(得分:0)

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

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