在webform上自动生成文本框ID
本文关键字:ID 文本 自动生成 webform | 更新日期: 2023-09-27 18:09:44
我在Visual Studio上使用 c# 。我想生成一个webform与自动编号的Textboxes
取决于从前一页的输入。做这个循环的最好方法是什么?
输入为4
下一页应该生成ID为
的文本框- "name1"
- "name2"
- "name3"
- "name4"
像这样:
<asp:TextBox ID="name1" runat="server"></asp:TextBox>
<asp:TextBox ID="name2" runat="server"></asp:TextBox>
<asp:TextBox ID="name3" runat="server"></asp:TextBox>
<asp:TextBox ID="name4" runat="server"></asp:TextBox>
我的问题的第2部分是,如果我想调用它们时,Button
是点击,我应该如何使用循环来获得这些ID?
使用for循环和PlaceHolder
控件创建动态TextBox
控件
<asp:PlaceHolder ID="phDynamicTextBox" runat="server" />
int inputFromPreviousPost = 4;
for(int i = 1; i <= inputFromPreviousPost; i++)
{
TextBox t = new TextBox();
t.ID = "name" + i.ToString();
}
//on button click retrieve controls inside placeholder control
protected void Button_Click(object sender, EventArgs e)
{
foreach(Control c in phDynamicTextBox.Controls)
{
try
{
TextBox t = (TextBox)c;
// gets textbox ID property
Response.Write(t.ID);
}
catch
{
}
}
}
您可以在Page Init
事件处理程序中通过say循环来创建这些控件,以确定控件需要可用的次数。
请记住,由于这些是动态控件,它们需要在回发时重新创建,而不会自动完成。
进一步动态控制和回发
检查此代码。在第一页…
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Default.aspx?Name=" + TextBox1.Text);
}
在第二页中,你可以从querystring中获取值并动态创建控件
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["Name"] != null)
Response.Write(Request.QueryString["Name"]);
Int32 howmany = Int32.Parse(Request.QueryString["Name"]);
for (int i = 1; i < howmany + 1; i++)
{
TextBox tb = new TextBox();
tb.ID = "name" + i;
form1.Controls.Add(tb);
}
}
for ( int i=0; i<4; i++ )
{
TextBox t = new TextBox();
t.ID = "name" + i.ToString();
this.Controls.Add( t );
}