如何在asp.net checkboxlist中设置多个选定的值

时间:2009-04-27 11:24:26

标签: asp.net .net-3.5 checkboxlist

我有一个绑定到linq到sql数据源的asp.net复选框列表,当我在页面加载事件上检查我的CheckBoxList的项目计数时,它是0.我希望能够在我的复选框列表中设置所选项目这里但不能。

数据源的选定事件在页面加载后触发。如果是这种情况,如何在列表中设置所选项目?

如果我将SelectedValue设置为一个值,它只显示最后一个选中的值而不是所有选定的值。如何在pageload事件中的checkboxlist中选择多个值?

7 个答案:

答案 0 :(得分:9)

我知道这是一个老帖子,但我最近遇到了同样的问题。

要选择DataBound CheckBoxList的多个项目,请处理DataBound事件并循环遍历Items集合,根据需要在每个项目上单独设置Selected属性。

设置控件的SelectedValue属性仅检查最终项目。

 foreach (ListItem item in MyCheckBoxList.Items)
 {
     item.Selected = ShouldItemBeSelectedMethod(item.Value);
 }

答案 1 :(得分:5)

我使用的好方法:

 private void SetCheckBoxListValues(CheckBoxList cbl, string[] values)
        {
            foreach (ListItem item in cbl.Items)
            {
                item.Selected = values.Contains(item.Value);
            }
        }

答案 2 :(得分:3)

public void SetValueCheckBoxList(CheckBoxList cbl,string sValues)             {                 if(!string.IsNullOrEmpty(sValues))                 {
                    ArrayList values = StringToArrayList(sValues);
                    foreach(cbl.Items中的ListItem li)                     {                         if(values.Contains(li.Value))                             li.Selected = true;                         其他                             li.Selected = false;
                    }
                }             }

private ArrayList StringToArrayList(string value)
        {
            ArrayList _al = new ArrayList();
            string[] _s = value.Split(new char[] { ',' });

            foreach (string item in _s)
                _al.Add(item);

            return _al;
        }

谢谢, slnavn2000

答案 3 :(得分:1)

听起来像是页面生命周期 - 数据绑定问题。

你应该看一下({3}}的答案。

答案 4 :(得分:1)

我使用DataBound事件来选择设置所选项目。

答案 5 :(得分:0)

从列表中设置checkboxlist所选项目:

        List<int> yourlist;
        //fill yourlist
        foreach (ListItem item in checkboxlist.Items)
        {
            if (yourlist.Contains(int.Parse(item.Value.ToString())))
                item.Selected = true;                
        }

答案 6 :(得分:0)

假设您的值是字符串数组。那我就这样做

foreach (ListItem li in ctrl.Items)
   li.Selected = Array.Exists(values, x => x == li.Value);