当勾选CheckBoxList值时,可以实现多选,那么如何获取勾选的值呢? 由于用selectItem.text只能得到最小的Index的值,所以不能直接获取。
方法:每次获得一个勾选的值之后,把Selected选项设置为false,这样,下一个勾选的数据就成了Index最低的选项,此时selectedtext为此项. 这样可以获取多个值。但是还是会有问题。先看代码:
string
multValue()
... {
ArrayList parm = new ArrayList();
string listvalue = "";
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
...{
if (CheckBoxList1.Items[i].Selected == true)
...{
listvalue += CheckBoxList1.SelectedItem.Text;
CheckBoxList1.Items[i].Selected = false;
listvalue += ",";
}
}
return listvalue;
}
... {
ArrayList parm = new ArrayList();
string listvalue = "";
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
...{
if (CheckBoxList1.Items[i].Selected == true)
...{
listvalue += CheckBoxList1.SelectedItem.Text;
CheckBoxList1.Items[i].Selected = false;
listvalue += ",";
}
}
return listvalue;
}
以上这段代码完全可以取出所有勾选值,放在一个以逗号分割的字符串里,但是,页面上所勾得选项已经失去了。因为我们每取一次值的时候,就将selected设置为false. 那么如何解决这个问题呢?
方法:将所选值放入一个ArrayList里面,当取得所有值之后,在做一个循环恢复所选值。判断条件是将ArrayList里的选项和CheckBoxList的值比较,如何一样,就将selected设置为true. 另外为了解决数组不越界问题,一定要将ArrayList构造成和CheckBoxList中选项个数一样。以下是代码。
string
Option()
... {
ArrayList parm = new ArrayList();
string listvalue = "";
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
...{
if (CheckBoxList1.Items[i].Selected == true)
...{
listvalue += CheckBoxList1.SelectedItem.Text;
parm.Add(CheckBoxList1.SelectedItem.Text);
CheckBoxList1.Items[i].Selected = false;
listvalue += ",";
}
else
...{
parm.Add("");
}
}
//恢复勾选值
for (int i = 0; i < parm.Count; i++)
...{
if (parm[i].ToString() == CheckBoxList1.Items[i].Text.ToString())
...{
CheckBoxList1.Items[i].Selected = true;
}
}
return listvalue;
}
... {
ArrayList parm = new ArrayList();
string listvalue = "";
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
...{
if (CheckBoxList1.Items[i].Selected == true)
...{
listvalue += CheckBoxList1.SelectedItem.Text;
parm.Add(CheckBoxList1.SelectedItem.Text);
CheckBoxList1.Items[i].Selected = false;
listvalue += ",";
}
else
...{
parm.Add("");
}
}
//恢复勾选值
for (int i = 0; i < parm.Count; i++)
...{
if (parm[i].ToString() == CheckBoxList1.Items[i].Text.ToString())
...{
CheckBoxList1.Items[i].Selected = true;
}
}
return listvalue;
}