2013-08-05 123 views
0

當複選框列表被選中時,我已經設置了以下方法。獲取複選框列表中的選定值

protected void chk1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     foreach (ListItem list in chk1.Items) 
     { 
      if (list.Selected) 
      { 
       string name = list.Value.ToString(); 
      } 
     } 

    } 

我需要從複選框列表中顯示選中的項目。但是,對於每次迭代,所選屬性始終爲false。它永遠不會滿足條件

   if (list.Selected) 
       { 
        string name = list.Value.ToString(); 
       } 

我該如何解決這個問題?

+0

多少個項目進行檢查?如果您有超過1個ListItem,則'name'將被覆蓋 – MethodMan

+0

列表中有3個項目,我需要顯示選中的項目。有沒有一種方法可以確保從不檢查> 1的值。我不想使用單選按鈕 – user544079

+0

您是否想在每次檢查或取消選中某個項目時執行檢查?控件上的AutoPostBack屬性也決定了如果你想在點擊按鈕後獲取值的行爲,例如,我會從現有的事件處理程序中刪除代碼,並將該代碼放入單獨的方法或button_Click事件中.. – MethodMan

回答

1

嘗試這樣的事情

var selectedListItems = chk1.Items.Cast<ListItem>().Where(x => x.Selected); 

或在您的情況

var list = chk1.Items.Cast<ListItem>().Where(x => x.Selected); 

現在你將有一個集合,您可以檢查/代碼對

也確保該代碼是被解僱或檢查是否有一個PostBack

y OU可以通過檢查if(!Is.PostBack){ }

0

我的錢是你重新綁定在每一個回發的控件檢查這一點,而不是這樣做:

if (!Page.IsPostBack) 
{ 
    // Only bind controls on initial page and let viewstate remember what the user did 
}