2012-06-01 48 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但不是你做到这一点,我试了一下,谢谢! :) –