循环读取CheckBoxList中勾选的值

    技术2022-05-11  73

        当勾选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;}

    以上这段代码完全可以取出所有勾选值,放在一个以逗号分割的字符串里,但是,页面上所勾得选项已经失去了。因为我们每取一次值的时候,就将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;}

    最新回复(0)