2011-09-26 74 views
1

我正在使用C# on Visual Studio。我想生成一个网络表格,自动编号为Textboxes,具体取决于上一页的输入。做这个循环的最好方法是什么?asp.net自动生成的文本框在webform上的ID

例如:

输入是4

下一个页面应与

  • “NAME1”
  • “NAME2”
  • “NAME3”
  • ID产生文本框
  • “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?

回答

0
for (int i=0; i<4; i++) 
{ 
    TextBox t = new TextBox(); 
    t.ID = "name" + i.ToString(); 

    this.Controls.Add(t); 
} 
+0

他也应该使用一个占位符的控制有超过所得的控制端,其中控制在页面上。 –

+0

当然,'this.Controls.Add'只是一个例子 –

+0

将TextBox投入Button会抛出异常!!! – Burimi

2

使用循环和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 
     { 

     } 
    } 
} 
1

你可以在页面Init事件处理程序创建这些控件的说环路的次数控制需求提供。

请记住,因为这些是动态控制,它们需要在回发期间重新创建,并且不会自动完成。

而且Dynamic controls and postback

1

检查这个代码。 在第一页......

protected void Button1_Click(object sender, EventArgs e) 
    {   
    Response.Redirect("Default.aspx?Name=" + TextBox1.Text); 
    } 

在第二页,你可以从查询字符串值,并创建控件动态

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); 
      } 
    }