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

Posted

技术标签:

【中文标题】如何在 asp.net checkboxlist 中设置多个选定的值【英文标题】:How to set multiple selected values in asp.net checkboxlist 【发布时间】:2010-10-22 01:00:59 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

你真的应该看看this question的(答案)。

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

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

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

【讨论】:

不要忘记包含 System.Web.UI.WebControls 命名空间【参考方案4】:
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

【讨论】:

【参考方案5】:

我用的不错的方法:

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

【讨论】:

这将引发错误,除非您有: using System.Linq; 对我来说,cbl.Items 在 Page_Load 处是空的。【参考方案6】:

set checkboxlist 从列表中选择项目:

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

【讨论】:

【参考方案7】:

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

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

【讨论】:

以上是关于如何在 asp.net checkboxlist 中设置多个选定的值的主要内容,如果未能解决你的问题,请参考以下文章

jquery 如何获取asp.net控件 CheckBoxList 中 选中的值?

如何将 CSS 应用于 ASP.NET CheckBoxList 控件的内部元素

为啥被删除:ASP.NET MVC CheckBoxList(没有 MVCContrib)

使用 jQuery AJAX 填充 ASP.Net CheckBoxList ClientSide

使用 Jquery 检查 asp.net checkboxlist

asp:CheckBoxList 的对齐和填充