2011-05-25 73 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)); 
} 
相关问题