我在ASP.NET页面中以编程方式构建了许多文本框,在我单击按钮后,我想处理这些值,是否有可能从ViewState中的ID中检索它们?
这是我的代码:
aspx中表的引用:
<asp:Table ID="Distances" runat="server" ViewStateMode="Inherit"></asp:Table>
然后在创建所有行和单元格后面的代码中,我将一个文本框添加到其中一些:
Distances.Rows[j].Cells[i].Controls.Add(CreateTB(distance.ToString(), (i + j * rows).ToString(), false));
protected TextBox CreateTB(string text, string id, bool ebanled = true)
{
TextBox tb = new TextBox() { Text = text, ID = id, Enabled = ebanled};
tb.TextChanged += new EventHandler(OnTBChanged);
return tb;
}
答案 0 :(得分:1)
ViewState
,因此{/ 1}}属性应该在回发后保持不变。
所以你可以使用Text
或枚举它们来引用FindControl("TextBoxID")
(假设它们被添加到像TextBox
这样的容器控件中):
Panel
或
foreach(TextBox txt in MyPanel.Controls.OfType<TextBox>())
{
String text = txt.Text;
}
我假设您没有在回发中重新创建TextBox txt = (TextBox)MyPanel.FindControl("TextBox1")
String text = txt.Text;
。因此,您需要使用与以前相同的ID,并在页面生命周期的最后阶段在TextBoxes
中重新创建它们。所以你可以在一个事件中创建它们,但你不能在那里重新创建它们。
您应该在动态创建代码时显示代码,然后我可以更具体。