【问题标题】:Retaining viewstate in textboxes found in a dynamically created table在动态创建的表格中找到的文本框中保留视图状态
【发布时间】:2011-01-12 15:19:57
【问题描述】:

我的问题是我有一个包含 ASP:Table 的 ASPX 页面。表的行在 Page_Load 上动态添加。表中的一列包含文本框,但是当我在文本框上键入内容并导致回发时,我无法找到刚刚输入的值。并且在回发后不显示该表。

谁能帮帮我?我想用修改后的文本框值保留表格视图状态,这样当我回发到服务器时,我可以截取这些新值。

提前致谢, 凯文

【问题讨论】:

标签: c# asp.net controls viewstate dynamic


【解决方案1】:

您需要确保重新创建具有相同 ID 的文本框,然后您应该能够找到该值。例如,如果您使用 TextChanged 事件,只要每次重新创建文本框并具有相同的 ID,这些事件就会触发。

【讨论】:

    【解决方案2】:

    表的行(或表本身)是否在每个 Page_Load 中添加?如果您希望它们在回发之间正常工作,它们应该是。

    编辑:使用相同的 ID,正如另一个答案所指出的那样。

    【讨论】:

    • 所以如果我做对了,我必须重新添加具有相同 ID 的表行,但是如果这些行没有 ID 怎么办。事实上,只有文本框有 ID。假设我将 textbox 的值从 2 更改为 20,然后导致回发,如果我在回发后使用 textbox 重新创建表行,它将如何保留值 20?
    • 只要实际表本身具有相同的 ID,它的行也应该自动获得正确的 ID。并且您的文本框也需要在回发之间具有相同的 ID。您是否有特殊原因动态添加表格,而不是使用 GridView 并仅更改其数据源的内容?
    【解决方案3】:

    如果您希望 ViewState 跟踪任何内容,则需要在 Init 事件期间(以及每次加载时)添加动态控件,因为 ViewState 在 Page_Load 之前恢复。

    但是,TextBox 值是在帖子数据中找到的,而不是在 Viewstate 中。这是一个普遍的误解。但同样的规则也适用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      相关资源
      最近更新 更多