如何检查是否至少选中了一个复选框?

时间:2015-09-27 04:33:13

标签: c# asp.net checkboxlist

我只是在每个复选框列表中选中至少一个复选框时才尝试将我的数据绑定到gridview。然而,它似乎没有工作,因为当我点击提交它没有复选框选中它仍然进入绑定语句,并没有在标签中显示文本消息。

我的代码出了什么问题?请帮忙

if (IsPostBack)
{
   if (CheckBoxList1.SelectedValue != null && CheckBoxList2.SelectedValue != null)
   {
      Bind();
   }
   else if (CheckBoxList1.SelectedValue == String.Empty)
   {
      LABEL1.Text = ("Please select at least one checkbox();
   }
   else if (CheckBoxList2.SelectedValue == String.Empty)
   {
      LABEL2.Text = ("Please select at least one checkbox").ToString();
   }

5 个答案:

答案 0 :(得分:3)

使用linq Any

if (IsPostBack)
{
    bool seleceted1 = CheckBoxList1.Items.Cast<ListItem>().Any(li => li.Selected);
    bool seleceted2 = CheckBoxList2.Items.Cast<ListItem>().Any(li => li.Selected);

    if (selected1 && selected2)
    {
       Bind();
    }
    else if (!selected1)
    {
       LABEL1.Text = ("Please select at least one checkbox();
    }
    else if (!selected2)
    {
       LABEL2.Text = ("Please select at least one checkbox").ToString();
    }

如果您想要至少一个检查项目,请使用||运算符。无论从哪个清单开始。

if (selected1 || selected2) // true if at least 1 item is checked
{
    Bind();
}

答案 1 :(得分:1)

您可以使用计数属性来确定是否从ComboBoxList中选择了任何项目。 Count将返回所选项目的编号,如果您没有标记任何选择,则此属性将返回0.

if (IsPostBack)
{
   if (CheckBoxList1.Items.Cast<ListItem>().Count(li => li.Selected) != 0 && 
       CheckBoxList2.Items.Cast<ListItem>().Count(i => i.Selected) != 0)
   {
      Bind();
   }
   else if (!CheckBoxList1.Checked)
   {
      LABEL1.Text = ("Please select at least one checkbox();
   }
   else if (!CheckBoxList2.Checked)
   {
      LABEL2.Text = ("Please select at least one checkbox").ToString();
   }
}

答案 2 :(得分:1)

复选框值不会为空,因此您只需检查值是否为空,如下所示:

if (!string.IsNullOrEmpty( CheckBoxList1.SelectedValue)  && !string.IsNullOrEmpty( CheckBoxList2.SelectedValue))
               {
                  Bind();
               }
    else 
    {
    if (string.IsNullOrEmpty( CheckBoxList1.SelectedValue))
       {
          LABEL1.Text = ("Please select at least one checkbox();
       }
       else if (string.IsNullOrEmpty( CheckBoxList2.SelectedValue))
       {
          LABEL2.Text = ("Please select at least one checkbox").ToString();
       }
    }

答案 3 :(得分:1)

If(IsPostback)我认为是罪魁祸首。如果您的页面已被按钮刷新(PostBack),那么您的复选框列表将为Bind()。因此,每当您单击页面中任何位置的按钮时,您的列表都会刷新,从而删除所选的框。

尝试将If(IsPostBack)更改为If(!IsPostBack)

编辑:

哦得到它,你的.SelectedValue是一个字符串,因此它永远不会为空。

更改此

if(CheckBoxList1.SelectedValue != null && CheckBoxList2.SelectedValue != null)

到这个

if(CheckBoxList1.SelectedValue != String.Empty && CheckBoxList2.SelectedValue != String.Empty)

并将If(!IsPostBack)还原为If(IsPostBack),因为此代码事件似乎位于button_click或其他内容,而不是我认为PageLoad的内容。

请关注。感谢

答案 4 :(得分:0)

简单的

    for (int i = 0; i < RadioButtonList1.Items.Count - 1; i++)
    {
        if (RadioButtonList1.Items[i].Selected==true)
        {
            //Bind here
        }
    }