0

リピーター内に2つのドロップダウンコントロールがあり、ボタンクリックでそれらを繰り返す必要があります。どうすればそれを達成できますか??

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
{ 
    TextBox t = new TextBox(); 
    t.ID = e.Item.ItemIndex.ToString(); 
    e.Item.Controls.Add(t); 
} 

これは正しい方法ですが、リピーター内のボタンを見つけて起動するにはどうすればよいですか。

4

2 に答える 2

0

DropDownListsおよびButtonコントロールをリピーター内のPlaceHolderコントロールに追加します。

<asp:Repeater ID="Repeater1" runat="server" EnableViewState="true"
            onitemcommand="Repeater1_ItemCommand" onitemdatabound="Repeater1_ItemDataBound">
            <ItemTemplate>
                <asp:PlaceHolder ID="PlaceHolder1" runat="server">
                    <asp:DropDownList ID="DropDownList1" runat="server">
                    <asp:ListItem Text="one"></asp:ListItem>
                    <asp:ListItem Text="two"></asp:ListItem>
                    </asp:DropDownList>
                    <asp:DropDownList ID="DropDownList2" runat="server">
                    <asp:ListItem Text="three"></asp:ListItem>
                    <asp:ListItem Text="four"></asp:ListItem>
                    </asp:DropDownList>
                    <asp:Button ID="Button1" runat="server" UseSubmitBehavior="false" Text="Button" CommandName="btn" />
                </asp:PlaceHolder>
            </ItemTemplate>
        </asp:Repeater>

リピーターのItemCommandイベントで、ボタンクリックからCommandNameを確認し、動的ドロップダウンリストを作成してプレースホルダーに追加します。

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
   if (e.CommandName == "btn")
   {
       DropDownList ddl = new DropDownList();
       ddl.ID = "DropDownList1";
       ddl.DataSource = new string[] { "one", "two" };
       ddl.DataBind();

       // your second dropdown would be created here in the same way
       pl.Controls.Add(ddl);
   }
}

SelectedIndexChangedイベントをフックするために行うべき作業がもう少しありますが、これで開始できます。

于 2012-11-01T10:33:25.583 に答える