11

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

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

如果我将 SelectedValue 设置为一个值,它只会显示最后一个被选中的值,而不是所有被选中的值。如何在页面加载事件的复选框列表中选择多个值?

4

7 回答 7

10

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

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

设置控件的 SelectedValue 属性只检查最后一项。

 foreach (ListItem item in MyCheckBoxList.Items)
 {
     item.Selected = ShouldItemBeSelectedMethod(item.Value);
 }
于 2010-03-17T14:57:12.037 回答
5

我使用的好方法:

 private void SetCheckBoxListValues(CheckBoxList cbl, string[] values)
        {
            foreach (ListItem item in cbl.Items)
            {
                item.Selected = values.Contains(item.Value);
            }
        }
于 2014-12-24T10:21:52.997 回答
3
public void SetValueCheckBoxList(CheckBoxList cbl, string sValues)
        {
            if (!string.IsNullOrEmpty(sValues))
            {                
                ArrayList values = StringToArrayList(sValues);             
                foreach (ListItem li in cbl.Items)
                {
                    if (values.Contains(li.Value))
                        li.Selected = true;
                    else
                        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

于 2010-04-12T04:32:31.730 回答
1

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

你真的应该看看这个问题的(答案) 。

于 2009-04-27T11:39:16.487 回答
1

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

于 2009-04-29T07:38:53.287 回答
0

假设您的值是字符串数组。然后我会这样做

foreach (ListItem li in ctrl.Items)
   li.Selected = Array.Exists(values, x => x == li.Value);
于 2021-05-18T19:43:00.140 回答
0

设置 checkboxlist 从列表中选择的项目:

        List<int> yourlist;
        //fill yourlist
        foreach (ListItem item in checkboxlist.Items)
        {
            if (yourlist.Contains(int.Parse(item.Value.ToString())))
                item.Selected = true;                
        }
于 2016-02-17T06:16:11.517 回答