2012-03-29 207 views
1

我的問題是,當我點擊一個列表框另一個列表框應具有動態相關的值顯示。列表框顯示,但列表框事件不會觸發。 lb_SelectedIndexChanged事件未觸發。動態添加列表框事件在不觸發

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     SqlCommand com = new SqlCommand("select EmpId,EmpName from OrgChart where  ManagerID=0", con); 
     con.Open(); 
     SqlDataReader dr = com.ExecuteReader(); 
     int i=0; 

     while (dr.Read()) 
     { 
      empid[i] = Convert.ToInt32(dr[0].ToString()); 
      ename[i] = dr[1].ToString(); 
      i++; 
     } 

     for(int j=0;j<i;j++) 
      ListBox1.Items.Add(empid[j]+"-"+ename[j]); 

     ListBox1.Items.Add("create new"); 
    } 
} 

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Table1.Visible =false; 
    Table2.Visible = false; 
    string comand = ListBox1.SelectedValue.ToString(); 
    if (comand == "create new") 
    { 
     Table1.Visible = true; 
    } 
    else 
    { 
     Table2.Visible = true; 
     string[] emp = comand.Split('-'); 
     getdetails(Convert.ToInt32(emp[0])); 
    } 
} 

static ListBox lb = new ListBox();   
void getdetails(int empid) 
{ 
    managerid = empid; 
    con.Open(); 
    com = new SqlCommand("select EmpId,EmpName from OrgChart where ManagerID=" + managerid + "", con); 
    dr = com.ExecuteReader(); 

    lb.ID = "lb1"; 
    lb.AutoPostBack = true; 

    while (dr.Read()) 
    { 
     lb.Items.Add(dr[0].ToString() + "-" + dr[1].ToString()); 
    } 

    lb.Items.Add("create new"); 

    lb.SelectedIndexChanged += new EventHandler(this.lb_SelectedIndexChanged); 

    this.Controls.Add(lb); 
} 

void lb_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Table1.Visible = false; 
    Table2.Visible = false; 
    getdetails(managerid); 
    string comand = ((ListBox)sender).SelectedValue.ToString(); 
    if (comand == "create new") 
    { 
     Table1.Visible = true; 
    } 
    else 
    { 
     Table2.Visible = true; 
     string[] emp = comand.Split('-'); 
     getdetails(Convert.ToInt32(emp[0])); 
    } 

回答

1

您需要的.AutoPostBack屬性設置爲true。

在你的代碼示例是像

if (!IsPostBack) 
{ 
    //... 
    ListBox1.AutoPostBack = true; 
    //... 

} 
+0

或者從GUI可以編輯列表框的屬性'TRUE'啓動 – cyborg007 2012-03-29 06:43:55

1

添加列表的OnInit事件,因爲一些事件不會onload事件

相關問題