2012-06-01 46 views
2

我得到了與複選框的變化量的CheckBoxList,和我做類似的東西:選擇複選框未承認爲

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     for (int j = 0; j < CheckBoxList1.Items.Count; j++) 
     { 
      //LabelTest.Text = "Something"; It works here 
      if (CheckBoxList1.Items[j].Selected) 
      { 
       //LabelTest.Text = "Something 2"; It doesn't work here 
       TextBoxTest.Text = CheckBoxList1.Items[j].Text; 
       LabelTest.Text = CheckBoxList1.Items[j].Value; 
      } 
     } 
    } 

當我檢查中,將「東西」是顯示在我的頁面上,但其餘的不是。 我試着寫我的「如果」也喜歡它:

if (!CheckBoxList1.Items[j].Selected) 

而且做這樣的話,當我檢查一個盒子,我TextBoxTest顯示「106」,這是複選框我的總數,但不選中的框的數量。

我的CheckBoxList1有一個真正的autopostback。

感謝您的幫助,對不起我的英語不好。

+0

可以u顯示其中u填充的CheckBoxList – Talha

+0

當然,我問另外一個問題前面,一切(我認爲)的代碼就可以了:) http://stackoverflow.com/questions/10846445/selecting-one -checkbox-in-loop-generated-checkboxes-from-checkboxlist –

+1

你什麼時候填充你的複選框?如果您在每個「Page_Load」上重新創建它們,則可能會覆蓋事實,即您已經選中了一個。 – geekchic

回答

3

的問題是與你項目添加到您的CheckBoxList的方式來改變for循環。您在另一個主題中提供了該代碼。你應該做的是附上這裏面的代碼:

if (!IsPostBack) 
{ 
    ... your code to add items to the CheckBoxList 
} 

否則,重新創建上的虛假的Selected屬性的默認值每回發名單。

+0

非常感謝你!你說對了 !我現在得到了選中框的實際數字。謝謝你,非常感謝! –

3

對於複選框,你應該使用屬性Checked,而不是Selected

if (CheckBoxList1.Items[j].Checked) 

但現在我不能對此進行測試的權利。

+0

我嘗試過,但我有一個「等等等等不包含」檢查「的定義」所以我改爲「選定」:/ –

+0

@PierrePellegrinoMilza:怎麼可能是你的複選框沒有檢查屬性。看看這裏http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox.aspx –

+0

什麼是CheckBoxList的完全限定類型? – Franky

1

這應該和我測試

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
     foreach (ListItem item in CheckBoxList1.Items) 
     { 
      if (item.Selected == true) 
      { 
       //Response.Write(item.Value); 
       LabelTest.Text = item.Value; 
      } 
     } 
} 
+0

正如你和史蒂夫張貼同樣的東西,我認爲你是對的,我試着用它,非常感謝! –

1

你在哪裏添加複選框列表項?希望是在頁面加載。

在頁面加載:

private void Page_Load() 
{ 
    if (!IsPostBack) 
    { 
     // load only fist time 
     LaodCheckBoxList(); 
    } 
} 

因爲啓用自動回真正的CheckBoxList的它會回傳並重新創建所有列表項,您將失去選擇狀態。

+0

謝謝,但我遇到同樣的問題,因爲當我使用「.Checked」:「等等等等不包含」GetItemCheckState「的定義」:( –

+0

@PierrePellegrinoMilza更新了我的答案,請檢查 – Damith

+1

我剛剛這確切的想法,但沒有看到答案在這裏:) – geekchic

1

據我所知你的代碼應該工作。 嘗試用一個foreach

foreach (ListItem itm in CheckBoxList1.Items) 
{    
    if (itm.Selected == true)    
    {     
     TextBoxTest.Text = itm.Text;     
     LabelTest.Text = itm.Value;    
    }   
} 
+0

你是對的,它應該是工作... – Talha

+0

我試着用foreach但不是你做到這一點,我試了一下,謝謝! :) –