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

本文关键字:复选框 一个 何检查 检查 是否 | 更新日期: 2023-09-27 18:14:53

我试图绑定我的数据到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();
   }

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

使用linq Any

if (IsPostBack)
{
    bool selected1 = CheckBoxList1.Items.Cast<ListItem>().Any(li => li.Selected);
    bool selected2 = 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();
}

我认为If(IsPostback)是罪魁祸首。如果您的页面被按钮刷新(PostBack),那么您的复选框列表将绑定()。所以每次你点击一个按钮在页面的任何地方,你的列表得到刷新,使您的选择框被删除。

尝试将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

请联系。由于

您可以使用Count属性来确定是否从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();
   }
}

复选框的值不会为空,所以您只需要在值为空时进行检查,如下所示:

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();
       }
    }