2016-08-01 66 views
1
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); 
    } 

第一個列表框selectedindexchanged事件工作但第二個列表框selectedindexchanged事件不起作用。如果我在第二個列表框上選擇一個選項,第二個列表框丟失。只需在第一個列表框上保留選定的選項。我能做些什麼?請幫幫我。如何在ASP.Net中動態創建列表框

+0

你想要什麼,看看用戶點擊第二個列表框的項目幫助?它應該創建第三個ListBox嗎? – ConnorsFan

回答

0

我希望你

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 
    } 
+0

我們需要添加的地方? –

+0

在保護無效Page_Load(對象發件人,EventArgs e) –

+0

如果與trired它,但這次第一個列表框選項丟失。 –

相關問題