如何允许最大复选框签入 asp.net c# 中的复选框列表
How to allow maximum check box to check in a checkboxlist in asp.net c#
我有一个复选框列表,其中有一些 items.I 想要指定最大复选框以允许检查
我们如何使用 C# 代码执行此操作。
这是我的代码
<asp:CheckBoxList ID="chkLstFields" runat="server" AutoPostBack="true">
</asp:CheckBoxList>
int br_id = Convert.ToInt32(ddlBrand.SelectedValue);
int status = Convert.ToInt32(ddlStatus.SelectedIndex.ToString());
DataTable dt_Spec = bl.sp_select_model_spec_field(br_id, status);
chkLstFields.Items.Clear();
if (dt_Spec.Rows.Count > 0)
{
for (int i = 0; dt_Spec.Rows.Count > i; i++)
{
chkLstFields.Items.Add(dt_Spec.Rows[i].ItemArray[0].ToString());
}
}
如果要限制勾选的物品数量,可以这样限制勾选的物品数量:
if(chkLstFields.Items.OfType<ListItem>().Count(x => x.Selected) > 2)
{
// show message you cannot select more than 2 items
}
else
{
// continue execution
}
您可以为此使用 CustomValidator
。我在一个旧的 VB.NET 项目中实现了它。
这里是相关的aspx:
<asp:ListBox ID="LbSymptomCodesInsert" runat="server"
CausesValidation="true"
ValidationGroup="VG_RMA_SAVE" SelectionMode="Multiple">
</asp:ListBox>
<asp:CustomValidator ID="CV_SymptomCodeSelectionCount" runat="server"
ValidateEmptyText="true"
ClientValidationFunction="validateSymptomCodeSelectionCount"
OnServerValidate="validateSymptomCodeSelectionCount"
ControlToValidate="LbSymptomCodesInsert"
Display="None"
EnableClientScript="true"
ErrorMessage="Select at least one and at most 5 SymptomCodes"
Style="visibility: hidden"
ValidationGroup="VG_RMA_SAVE">*</asp:CustomValidator>
以下是 javascript 函数:
function validateSymptomCodeSelectionCount(sender, args){
var listbox = document.getElementById('LbSymptomCodesInsert');
args.IsValid = validateListBoxSelectionCount(listbox, 1, 5);
}
function validateListBoxSelectionCount(listbox, minSelected, maxSelected){
var selected=0;
if(listbox != null){
for (var i=0; i<listbox.length; i++){
if(listbox.options[i].selected){
selected++;
if(selected>maxSelected)break;
}
}
}
return (selected >= minSelected && selected <= maxSelected);
}
这是 ServerValidate
(VB.NET 但我相信你明白了):
Protected Sub validateSymptomCodeSelectionCount(ByVal source As Object, ByVal args As ServerValidateEventArgs)
Dim count = 0
For Each item As ListItem In LbSymptomCodesInsert.Items
If item.Selected Then count += 1
If count > 5 Then Exit For
Next
args.IsValid = (count >= 1 AndAlso count <= 5)
End Sub
我有一个复选框列表,其中有一些 items.I 想要指定最大复选框以允许检查 我们如何使用 C# 代码执行此操作。
这是我的代码
<asp:CheckBoxList ID="chkLstFields" runat="server" AutoPostBack="true">
</asp:CheckBoxList>
int br_id = Convert.ToInt32(ddlBrand.SelectedValue);
int status = Convert.ToInt32(ddlStatus.SelectedIndex.ToString());
DataTable dt_Spec = bl.sp_select_model_spec_field(br_id, status);
chkLstFields.Items.Clear();
if (dt_Spec.Rows.Count > 0)
{
for (int i = 0; dt_Spec.Rows.Count > i; i++)
{
chkLstFields.Items.Add(dt_Spec.Rows[i].ItemArray[0].ToString());
}
}
如果要限制勾选的物品数量,可以这样限制勾选的物品数量:
if(chkLstFields.Items.OfType<ListItem>().Count(x => x.Selected) > 2)
{
// show message you cannot select more than 2 items
}
else
{
// continue execution
}
您可以为此使用 CustomValidator
。我在一个旧的 VB.NET 项目中实现了它。
这里是相关的aspx:
<asp:ListBox ID="LbSymptomCodesInsert" runat="server"
CausesValidation="true"
ValidationGroup="VG_RMA_SAVE" SelectionMode="Multiple">
</asp:ListBox>
<asp:CustomValidator ID="CV_SymptomCodeSelectionCount" runat="server"
ValidateEmptyText="true"
ClientValidationFunction="validateSymptomCodeSelectionCount"
OnServerValidate="validateSymptomCodeSelectionCount"
ControlToValidate="LbSymptomCodesInsert"
Display="None"
EnableClientScript="true"
ErrorMessage="Select at least one and at most 5 SymptomCodes"
Style="visibility: hidden"
ValidationGroup="VG_RMA_SAVE">*</asp:CustomValidator>
以下是 javascript 函数:
function validateSymptomCodeSelectionCount(sender, args){
var listbox = document.getElementById('LbSymptomCodesInsert');
args.IsValid = validateListBoxSelectionCount(listbox, 1, 5);
}
function validateListBoxSelectionCount(listbox, minSelected, maxSelected){
var selected=0;
if(listbox != null){
for (var i=0; i<listbox.length; i++){
if(listbox.options[i].selected){
selected++;
if(selected>maxSelected)break;
}
}
}
return (selected >= minSelected && selected <= maxSelected);
}
这是 ServerValidate
(VB.NET 但我相信你明白了):
Protected Sub validateSymptomCodeSelectionCount(ByVal source As Object, ByVal args As ServerValidateEventArgs)
Dim count = 0
For Each item As ListItem In LbSymptomCodesInsert.Items
If item.Selected Then count += 1
If count > 5 Then Exit For
Next
args.IsValid = (count >= 1 AndAlso count <= 5)
End Sub