我有一个绑定到 linq to sql 数据源的 asp.net 复选框列表,当我在页面加载事件上检查 CheckBoxList 的项目计数时,它为 0。我希望能够在此处设置复选框列表中的选定项目,但不能.
数据源的 selected 事件在页面加载后触发。如果是这种情况,我该如何设置列表中的选定项目?
如果我将 SelectedValue 设置为一个值,它只会显示最后一个被选中的值,而不是所有被选中的值。如何在页面加载事件的复选框列表中选择多个值?
我有一个绑定到 linq to sql 数据源的 asp.net 复选框列表,当我在页面加载事件上检查 CheckBoxList 的项目计数时,它为 0。我希望能够在此处设置复选框列表中的选定项目,但不能.
数据源的 selected 事件在页面加载后触发。如果是这种情况,我该如何设置列表中的选定项目?
如果我将 SelectedValue 设置为一个值,它只会显示最后一个被选中的值,而不是所有被选中的值。如何在页面加载事件的复选框列表中选择多个值?
我知道这是一个旧帖子,但我最近遇到了同样的问题。
要选择 DataBound CheckBoxList 的多个项目,请处理 DataBound 事件并循环遍历 Items 集合,根据需要在每个项目上单独设置 Selected 属性。
设置控件的 SelectedValue 属性只检查最后一项。
foreach (ListItem item in MyCheckBoxList.Items)
{
item.Selected = ShouldItemBeSelectedMethod(item.Value);
}
我使用的好方法:
private void SetCheckBoxListValues(CheckBoxList cbl, string[] values)
{
foreach (ListItem item in cbl.Items)
{
item.Selected = values.Contains(item.Value);
}
}
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
听起来像一个页面生命周期 - 数据绑定问题。
你真的应该看看这个问题的(答案) 。
我使用DataBound 事件来选择设置选中的项目。
假设您的值是字符串数组。然后我会这样做
foreach (ListItem li in ctrl.Items)
li.Selected = Array.Exists(values, x => x == li.Value);
设置 checkboxlist 从列表中选择的项目:
List<int> yourlist;
//fill yourlist
foreach (ListItem item in checkboxlist.Items)
{
if (yourlist.Contains(int.Parse(item.Value.ToString())))
item.Selected = true;
}