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

最初のユーザーコントロールのボタンがクリックされたときに次のユーザーコントロール(同じユーザーコントロール)を生成して、最初のユーザーコントロールから選択した値を取得できるようにします。

4

1 に答える 1

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. リピーターの再バインド

これにより、新しいユーザー コントロール オブジェクトの作成が大幅に簡素化されるだけでなく、以前に永続化されたデータのロードが非常に簡単になります。

于 2012-07-17T10:34:25.033 に答える