【发布时间】:2011-09-01 14:42:08
【问题描述】:
我知道我可以遍历 checkboxlist.Items 并查看是否没有选择任何项目,但是在后面的代码中是否有更好的方法来确定是否没有选择任何项目?
【问题讨论】:
标签: asp.net c#-2.0 checkboxlist
我知道我可以遍历 checkboxlist.Items 并查看是否没有选择任何项目,但是在后面的代码中是否有更好的方法来确定是否没有选择任何项目?
【问题讨论】:
标签: asp.net c#-2.0 checkboxlist
您必须检查 SelectedIndex。如果它等于-1,则表示没有选择任何内容。
CheckBoxList list = new CheckBoxList();
if (list.SelectedIndex == -1)
{
//Nothing is selected
}
【讨论】:
CheckBoxList 具有 SelectedIndex 和 SelectedValue 的属性。
可以检查是否有SelectedIndex;如果没有检查任何项目,则为 -1。
【讨论】:
这可能是验证 CheckBoxList 的最简单方法:
使用自定义验证器:
<asp:CustomValidator runat="server" ID="cvmodulelist" ClientValidationFunction="ValidateModuleList" ErrorMessage="Please Select Atleast one Module"></asp:CustomValidator>
创建一个 JavaScript 函数来验证 CheckBoxList:
// javascript to add to your aspx page
function ValidateModuleList(source, args)
{
var chkListModules= document.getElementById ('<%= chkModuleList.ClientID %>');
var chkListinputs = chkListModules.getElementsByTagName("input");
for (var i=0;i<chkListinputs .length;i++)
{
if (chkListinputs [i].checked)
{
args.IsValid = true;
return;
}
}
args.IsValid = false;
}
另一种选择是创建自定义验证控件,如下所示:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace CustomValidators
{
public class RequiredFieldValidatorForCheckBoxLists : System.Web.UI.WebControls.BaseValidator
{
private ListControl _listctrl;
public RequiredFieldValidatorForCheckBoxLists()
{
base.EnableClientScript = false;
}
protected override bool ControlPropertiesValid()
{
Control ctrl = FindControl(ControlToValidate);
if (ctrl != null)
{
_listctrl = (ListControl) ctrl;
return (_listctrl != null);
}
else
return false; // raise exception
}
protected override bool EvaluateIsValid()
{
return _listctrl.SelectedIndex != -1;
}
}
}
【讨论】: