【发布时间】:2013-11-07 20:47:44
【问题描述】:
我有一个服务器端表格控件。因为我事先不知道它会有多少行和列,所以我在我的页面Form_Load 事件处理程序中构建了这个表的内容。
效果很好。但是我正在用文本框填充同一个表格,如果单击提交按钮,我需要能够读取这些文本框。
目前看来,表内容在回发时已被清除。
在表格中动态创建文本框,然后在回发页面时读取这些文本框的值的最佳方法是什么?
【问题讨论】:
-
您必须最迟在
Page_Load中重新创建所有动态创建的控件,并使用相同的 ID。是否有理由不使用像GridView(renders as table) 或Repeater这样的 Web 数据绑定控件? -
但是如果我重新创建表格,那么文本框不会被重置并丢失编辑的值吗?我喜欢中继器控制,但这似乎会带来同样的问题。我仍然需要能够读取编辑后的值。
-
否,值将从
ViewState加载,如果您分配相同的 ID 并且不要在页面生命周期的后期重新创建控件,则会成功触发事件。 -
@TimSchmelter:好吧,你失去了我。如果它在 ViewState 中,为什么我需要重新创建所有动态创建的控件?无论如何,我创建表格内容的代码设置了文本框的值。因此,如果我在回发时这样做,这些值将不代表用户键入的内容。您知道任何可以解释您的建议的链接吗?
-
看看 msdn,例如根据页面的生命周期:msdn.microsoft.com/en-us/library/ms178472.ASPX,这也值得一读:dynamic controls(也是关于
ViewState的第一个链接)。