我有一个绑定到linq到sql数据源的asp.net复选框列表,当我在页面加载事件上检查我的CheckBoxList的项目计数时,它是0.我希望能够在我的复选框列表中设置所选项目这里但不能。
数据源的选定事件在页面加载后触发。如果是这种情况,如何在列表中设置所选项目?
如果我将SelectedValue设置为一个值,它只显示最后一个选中的值而不是所有选定的值。如何在pageload事件中的checkboxlist中选择多个值?
答案 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);