2016-02-21 70 views
1

如果在列表框中未選擇任何項目,我希望禁用按鈕。我有按鈕啓用設置爲false。當選擇一個項目時,該按鈕確實啓用了真,但是,啓用該按鈕後,如果沒有選擇列表項目,它將不會禁用。當在列表框中沒有選擇任何項目時禁用asp按鈕

後面的代碼:

protected void Button2_Click(object sender, EventArgs e) 
{ 
    List<ListItem> itemsRemove = new List<ListItem>(); 

    foreach (ListItem listItem in ListBox1.Items) 
    { 
     if (listItem.Selected) 
      itemsRemove.Add(listItem); 

    } 

    foreach (ListItem listItem in itemsRemove) 
    { 
     ListBox1.Items.Remove(listItem); 
    } 


} 

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    foreach (ListItem item in ListBox1.Items) 
    { 
     if (item.Selected) 
     { 
      Button2.Enabled = true; 
     } 
    } 
} 

回答

4

試試這個:

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Button2.Enabled = false; 

    foreach (ListItem item in ListBox1.Items) 
    { 
     if (item.Selected) 
     { 
      Button2.Enabled = true; 
     } 
    } 
} 

但它不是有這樣功能的最佳解決方案,它是更好地使用一些JavaScript代碼啓用/禁用按鈕。

EDIT(最小的解決方案):

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Button2.Enabled = ListBox1.Items.Any(x => x.Selected); 

} 
+0

感謝您的快速回復和建議。不幸的是,這並沒有解決問題。刪除所選項目後,該按鈕仍處於啓用狀態。 – jsnhndrsn1985

+0

將'Button2.Enabled = false;'移動到Page_Load或者在按鈕點擊處理程序中調用'ListBox1_SelectedIndexChanged'方法 –

+0

這樣做竅門Marcin。謝謝你的幫助! – jsnhndrsn1985

0

您還應該設置的ListBoxAutoPostBack財產true也都按鈕EnableViewStateListBox必須設置爲true

+0

請將您的答案移至評論,或編輯現有答案 – InferOn

相關問題