0

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

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

现在我想在单击第一个用户控件的按钮时生成下一个用户控件(相同的用户控件),以便我可以从第一个用户控件中获取 selectedvalue。

4

1 回答 1

0

如果您将 UserControl 放在中继器中,这会不会容易很多?

<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>

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

  1. 将新项目添加到集合
  2. 重新绑定中继器

这不仅极大地简化了新用户控件对象的创建,而且还使加载以前保存的数据变得更加容易。

于 2012-07-17T10:34:25.033 回答