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

8xiog9wr  于 2023-02-01  发布在  .NET
关注(0)|答案(5)|浏览(193)

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

krcsximq1#

使用链接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();
}
nszi6y05

nszi6y052#

我认为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
如有疑问,请联系我们。谢谢

7rfyedvj

7rfyedvj3#

您可以使用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();
   }
}
4jb9z9bj

4jb9z9bj4#

复选框的值不会为空,因此只有值为空时才需要选中,如下所示:

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

ckocjqey5#

简单的

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

相关问题