用户控制的动态人口

时间:2012-07-17 10:25:48

标签: c# asp.net

我有一个自定义用户控件,它是一个下拉框,旁边有一个按钮。

<asp:Panel ID="pnlSelect" runat="server">        
        <asp:Label ID="lblNameSelect" runat="server" Text="Name"></asp:Label>:&nbsp;
        <asp:DropDownList ID="ddlDivision" runat="server"></asp:DropDownList>&nbsp;
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click" />
</asp:Panel>

我需要在运行时创建它。

        UserControl.UCDropDownBox drpDivision = LoadControl("~/UserControl/UCDropDownBox.ascx") as UserControl.UCDropDownBox;
        drpDivision.ID = "drp1";
        drpDivision.LabelText = "Division";
        drpDivision.DataSource = dt;
        drpDivision.DataTextField = "colDescription";
        drpDivision.DataValueField = "colValue";
        phFormContent.Controls.Add(drpDivision);

现在我想在单击第一个usercontrol的按钮时生成下一个usercontrol(相同的usercontrol),这样我就可以从第一个usercontrol中获取selectedvalue。

1 个答案:

答案 0 :(得分:0)

如果将UserControl放在Repeater中,这不会更容易吗?

<asp:Repeater ID="multiControls" runat="server">
<ItemTemplate>
  <asp:Panel ID="pnlSelect" runat="server">        
        <asp:Label ID="lblNameSelect" runat="server" Text="Name"></asp:Label>:&nbsp;
        <asp:DropDownList ID="ddlDivision" runat="server"></asp:DropDownList>&nbsp;
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click" />
  </asp:Panel>
</ItemTemplate>
</asp:Repeater>

然后,您可以将对象集合绑定到Repeater。采用这种方法来解决您的问题,您需要做的就是: -

  1. 将新项目添加到集合
  2. 重新绑定中继器
  3. 这不仅极大地简化了新用户控件对象的创建,而且还使得加载以前持久化的数据变得更加容易。