我有一个复选框列表,我希望你有很多可以检查的上限。 这就是我所做的。
int numSelected = 0;
foreach (ListItem li in chkMultiBrand.Items)
{
if (li.Selected)
{
numSelected = numSelected + 1;
}
}
for (int i = 0; i < chkMultiBrand.Items.Count; i++)
{
if (numSelected >= Convert.ToInt32(objLimit.UPPERLIMIT))
{
chkMultiBrand.Items[i].Selected = false;
}
}
答案 0 :(得分:3)
我假设如果超过了最大数量,你想取消选中最后一个检查过的方框,这样就可以了
public void chk_SelectedIndexChanged(object sender, EventArgs e)
{
int numSelected = 0;
foreach (ListItem li in chkMultiBrand.Items)
{
if (li.Selected)
{
numSelected = numSelected + 1;
}
}
if (numSelected >= Convert.ToInt32(objLimit.UPPERLIMIT))
{
string[] control = Request.Form.Get("__EVENTTARGET").Split('$');
int index = control.Length - 1;
ListItem lastChecked = (ListItem) chkMultiBrand.Items[Int32.Parse(control[index])];
lastChecked.Selected = false;
}
}
虽然如果可能的话我可能会尝试做这个客户端 - 像这样http://jsfiddle.net/CXfgS/2/
答案 1 :(得分:0)
如果我正确地阅读了这段代码,那么你的代码就是
您需要组合循环 - 这并不完美,因为它不会跟踪选择项目的顺序,因此只会检查前X个复选框的数量,并且将取消选择任何后续项目。
int numSelected = 0;
foreach (ListItem li in chkMultiBrand.Items)
{
if (numSelected >= Convert.ToInt32(objLimit.UPPERLIMIT))
{
li.Selected = false;
}
if (li.Selected)
{
numSelected = numSelected + 1;
}
}