【问题标题】:ASP .Net - Change/Update Dynamically Created TextboxASP .Net - 更改/更新动态创建的文本框
【发布时间】:2012-12-28 23:03:46
【问题描述】:

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

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

更多信息:

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

【问题讨论】:

  • 看看您的Page_Load 活动是什么样子会很有帮助。但我的猜测是,您不会在每次加载后重新创建文本框。

标签: c# asp.net code-behind


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 2020-11-28
      • 2012-11-25
      • 1970-01-01
      相关资源
      最近更新 更多