2011-05-25 66 views
3

當我執行的代碼,我得到4個checkboxs我查/選擇的所有4複選框,當我嘗試調試代碼,它確實計數,我有4個複選框,但所有4個複選框被選中= false。如何判斷CheckBoxList的檢查/選擇 -

我所缺少的代碼?

<asp:checkboxlist id="chk" runat="server" ondatabinding="chk_DataBinding" 
    ondatabound="chk_DataBound"> 
</asp:checkboxlist> 

List<String> roles = new List<string>(); 

for (int i = 0; i < chk.Items.Count; i++) 
{ 
    if (chk.Items[i].Selected) 
    { 
     roles.Add(chk.Items[i].Value); 
    } 
} 
+0

並不清楚應該刪除所有元素?你甚至進入循環? – MBen 2011-05-25 19:09:14

+0

我更新了我的問題,是它進入循環,但它說我的天堂沒有選擇任何複選框(其實我已經檢查了所有的複選框) – 2011-05-25 19:13:43

+0

我很困惑。您正在循環顯示覆選框列表項目,並且如果選擇了一個項目,您將該值添加回複選框列表中? – 2011-05-25 19:13:54

回答

2

你的邏輯與ListControl.Items頁上給出的基本CheckBoxList一致的,從個人的經驗,檢查ListItem.Selected屬性應該能正常運行。

檢查以確保在您點擊「如果選中」邏輯之前您沒有重新填入CheckBoxList - 如果我必須猜測,我會說在每次回傳中您很有可能失去列表。簡單的解決方案是,如果它是回發,則不要調用您的數據綁定邏輯。

+0

我放在綁定的斷點,那就只當頁面加載後,我按一下按鈕(回傳)並不去綁定事件。 – 2011-05-25 19:29:24

+0

是否有可能要添加或從代碼刪除事件處理程序之後爲好,或者有邏輯的另一位來刪除和添加複選框沒有數據綁定?除此之外,如果您查看「Page.PreLoad」中的「CheckBoxList」或「Page.Load」的開頭,您是否看到任何選定的「ListItems」?謝謝 – 2011-05-25 19:35:41

+0

Thanx的答案,我忘了IsPostBack! – 2012-01-05 10:18:26

0
public string[] CheckboxListSelections(System.Web.UI.WebControls.CheckBoxList list) 
{ 
ArrayList values = new ArrayList(); 
for(int counter = 0; counter < list.Items.Count; counter++) 
{ 
    if(list.Items[counter].Selected) 
    { 
    values.Add(list.Items[counter].Value); 
    }  
} 
return (String[]) values.ToArray(typeof(string)); 
} 
相關問題