簡體   English   中英

如何在ASP.Net中動態創建列表框

[英]How to create a listbox dynamically in ASP.Net

    protected override void OnInit(EventArgs e)
    {
        ListBox lst = new ListBox();

        lst.Attributes["class"] = "cat-list";

        lst.DataSource = cat.list(Convert.ToInt32(0));
        lst.DataTextField = "catName";
        lst.DataValueField = "catId";
        lst.DataBind();


        lst.AutoPostBack = true;
        lst.SelectedIndexChanged += Lst_SelectedIndexChanged;

        Panel pnl = new Panel();
        pnl.Attributes["class"] = "col-sm-2 col-xs-12";
        pnl.Controls.Add(lst);

        categories.Controls.Add(pnl);
    }

    private void Lst_SelectedIndexChanged(object sender, EventArgs e)
    {
        ListBox listBox = (ListBox)sender;
        ListBox lst = new ListBox();

        lst.Attributes["class"] = "cat-list";

        lst.DataSource = cat.list(Convert.ToInt32(listBox.SelectedValue));
        lst.DataTextField = "catName";
        lst.DataValueField = "catId";
        lst.DataBind();


        lst.AutoPostBack = true;
        lst.SelectedIndexChanged += Lst_SelectedIndexChanged;

        Panel pnl = new Panel();
        pnl.Attributes["class"] = "col-sm-2 col-xs-12";
        pnl.Controls.Add(lst);

        categories.Controls.Add(pnl);
    }

第一個Listbox selectedindexchanged事件工作但第二個Listbox selectedindexchanged事件無效。 如果我在第二個列表框上選擇一個選項,則第二個列表框丟失。只需在第一個列表框中保留選定選項。 我該怎么辦? 請幫我。

我希望能幫助你

    Panel pnl = new Panel();
    ListBox lst1 = new ListBox();
    ListBox lst2 = new ListBox();
    ListBox lst3 = new ListBox();

    protected override void OnInit(EventArgs e)
    {
        lst1.Attributes["class"] = "cat-list";
        lst1.AutoPostBack = true;
        lst1.SelectedIndexChanged += Lst_SelectedIndexChanged;

        lst2.Attributes["class"] = "cat-list";
        lst2.AutoPostBack = true;
        lst2.SelectedIndexChanged += Lst_SelectedIndexChanged;
        lst2.Visible = false;

        lst3.Attributes["class"] = "cat-list";
        lst3.AutoPostBack = true;
        lst3.SelectedIndexChanged += Lst3_SelectedIndexChanged;
        lst3.Visible = false;

        pnl.Attributes["class"] = "col-sm-2 col-xs-12";
        pnl.Controls.Add(lst1);
        pnl.Controls.Add(lst2);
        pnl.Controls.Add(lst3);
        categories.Controls.Add(pnl);
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            lst1.DataSource = cat.list(Convert.ToInt32(0));
            lst1.DataTextField = "catName";
            lst1.DataValueField = "catId";
            lst1.DataBind();
        }
    }

    private void Lst_SelectedIndexChanged(object sender, EventArgs e)
    {
        ListBox listBox = (ListBox)sender;
        ListBox lst;
        if (listBox == lst1)
            lst = lst2;
        else
            lst = lst3;

        lst.DataSource = cat.list(Convert.ToInt32(listBox.SelectedValue));
        lst.DataTextField = "catName";
        lst.DataValueField = "catId";
        lst.DataBind();

        lst.Visible = true;
    }
    private void Lst3_SelectedIndexChanged(object sender, EventArgs e)
    {
        //your code for third Listbox
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM