如何检查是否至少选中了一个复选框
本文关键字:复选框 一个 何检查 检查 是否 | 更新日期: 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();
}
}