0

ADDボタンクリックイベントで動的に3つのDropDownListボックスを連続して生成する必要があります。DDLが生成されると、データソースをそれに割り当てることができ、c#asp.netでそれらに対してDDL-selectedEventChanged機能を実行できるようになります。
以下のリンクは正確に探していましたが、データソースを割り当てることができなかったか、機能を実行できませんでした

ボタンクリックで複数のDropDownListを追加する

より良いアイデアは助けてください

ボタンを押すと、一度に3つのDDLを取得する必要があります。もう一度押すと、再び生成されるはずなので、クリック数=いいえ。各行に3つのDDLがある行の

4

1 に答える 1

1

これがサンプルコードです。唯一の秘訣は、ポストバック後にこれらの動的コントロールを再度ロードする必要があることです。そうしないと、それらにアクセスできなくなります。

ここに画像の説明を入力してください

<asp:PlaceHolder runat="server" ID="PlaceHolder1"></asp:PlaceHolder>
<asp:Button runat="server" ID="AddButton" OnClick="AddButton_Click" Text="Add" />

private List<int> _controlIds;

private List<int> ControlIds
{
    get
    {
        if (_controlIds == null)
        {
            if (ViewState["ControlIds"] != null)
                _controlIds = (List<int>)ViewState["ControlIds"];
            else
                _controlIds = new List<int>();
        }
        return _controlIds;
    }
    set { ViewState["ControlIds"] = value; }
}

private List<string> DataSource
{
    get { return new List<string> { "One", "Two", "Three" }; }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        var dataSource = DataSource;

        foreach (int id in ControlIds)
        {
            var ddl = new DropDownList();
            ddl.ID = id.ToString();

            foreach (var data in dataSource)
                ddl.Items.Add(new ListItem(data));

            PlaceHolder1.Controls.Add(ddl);
        }
    }
}

protected void AddButton_Click(object sender, EventArgs e)
{
    var dataSource = DataSource;
    for (int i = 0; i < 3; i++)
    {
        var reqs = ControlIds;
        int id = ControlIds.Count + 1;

        reqs.Add(id);
        ControlIds = reqs;

        var ddl = new DropDownList();
        ddl.ID = id.ToString();

        foreach (var data in dataSource)
            ddl.Items.Add(new ListItem(data));

        PlaceHolder1.Controls.Add(ddl);
    }
}
于 2013-02-26T17:41:57.407 に答える