asp.net - 如何在单击按钮时动态添加控件?

时间:2013-09-19 13:32:58

标签: c# asp.net webforms

我正在尝试添加控件,但它会被覆盖。

在下图中如果单击“添加更多签证”按钮,我想显示所有这些字段。

代码:

<asp:PlaceHolder ID="PlaceHolder1" runat="server">
<div id="divreg" runat="server">
<table id="tbl" runat="server">
<tr>
     <td class="style8"> Visa Number:</td>
     <td class="style20"><asp:TextBox ID="txtUser" Width="160px" runat="server"/></td>
     <td class="style22"> Country Name:</td>
     <td class="style23">
     <asp:DropDownList ID="dropCountry" Width="165px" runat="server"> </asp:DropDownList></td>
</tr>
<tr>
     <td class="style22"> Type of Visa:</td>
     <td class="style23"><asp:DropDownList ID="dropVisa" Width="165px" runat="server">                    </asp:DropDownList></td>
     <td class="style22"> Type of Entry:</td>
     <td class="style23">
     <asp:DropDownList ID="dropEntry" Width="165px" runat="server">
     </asp:DropDownList> </td>
  </tr>
 <tr>
     <td class="style8"> Expiry Date</td>
     <td class="style20">
     <BDP:BasicDatePicker ID="BasicDatePicker4" runat="server" onselectionchanged="BasicDatePicker2_SelectionChanged" 
 AutoPostBack="True" />
  </td>
   <td class="style22"><asp:Button ID="btnAddVisa" Text="Add More Visa" runat="server" OnClick="btnAddVisa_Click" /> </td>

 </tr></table></div>
</asp:PlaceHolder>

代码.cs:

static int i = 0;
    protected void btnAddVisa_Click(object sender, EventArgs e)
    {
        i++;
        for (int j = 0; j <= i; j++)
        {
            PlaceHolder1.Controls.Add(divReg);
            PlaceHolder1.Controls.Add(new LiteralControl("<BR>"));
        }

    }

图像: 在这里,我点击Add More Visa按钮我想再次显示所有这些字段

有什么想法吗?提前致谢

1 个答案:

答案 0 :(得分:0)

创建用户控件以表示添加的所有内容,然后将控件作为一个整体添加。确保使用LoadControl方法而不是控件的构造函数。您还需要在ViewState中保留足够的信息以在Page_Load上重新创建控件。在你的情况下,控件的数量应该足够了。