我觉得我在这里遗漏了一些关于asp.net页面生命周期的基本信息。
我有一个CheckBoxList(虽然ListBox也是如此)
<asp:CheckBoxList runat="server" ID="cblCountriesAccessible" DataTextField="Text" />
我正在添加一堆ListItems
var lbData = new List<ListItem>();
lbData.Add(new ListItem("x", "", true));
lbData.Add(new ListItem("y", "", false));
然后将它们绑定到CheckBoxList
cblCountriesAccessible.DataSource = lbData;
cblCountriesAccessible.DataBind();
每次列表中的项目都显示为未选中(或在ListBox中未选中) 如果我将ListItems直接添加到标记中的控件,它们就会显示为选中或未选中。
<asp:ListItem Text="x" Value="" Selected="True" />
我在选择的代码中没有执行的错误是什么?我已经尝试用Checked设置为true来绑定CheckBoxes,同样的事情发生了。
编辑:好的,我没有正确设置选择。我现在正在使用
var lbData = new List<ListItem>();
var l1 = new ListItem("yy", "", true) {Selected = true};
var l2 = new ListItem("xx", "", true) {Selected = false};
lbData.Add(l1);
lbData.Add(l2);
他们仍然没有按照检查
加载答案 0 :(得分:4)
您可以创建ListItem更改其Selected
属性并添加收藏。
ListItem li1 = new ListItem("x", "", true);
ListItem li2 = new ListItem("x", "", true);
li1.Selected = true;
li2.Selected = true;
cblCountriesAccessible.Items.Add(li1);
cblCountriesAccessible.Items.Add(li2);
答案 1 :(得分:1)
ListItem.Enabled
与ListItem.Selected
不同。根据此MSDN页面(http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listitem.enabled.aspx)
启用只是确定是否可以选择它。创建具有此重载的项目时,它不会选择它。
根据此页面(http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkboxlist.aspx):“要确定CheckBoxList控件中的选定项,请遍历Items集合并测试集合中每个项目的Selected属性。”
我过去使用LINQ做了这个,让我的项目列表预先确定,然后迭代它们。
这是一些未经测试的代码,可以给你一个想法。这基本上就是我用Win Forms做同样的事情,所以你的用法可能略有不同:
For each item in Items
CheckedListBox.Items.Add(item.Name,Item.value,True)
Next
dim selectedItems as list(of Item) = items.where(function (x) x.selected = True)
for each item in CheckedListBox.items
item.Selected = selectedItems.contains(item.Value)
next
答案 2 :(得分:0)
public string GetListItems()
{
System.Collections.Generic.List<string> items = new System.Collections.Generic.List<string>();
foreach (ListItem item in lstfunction.Items)
{
if (item.Selected)
{
items.Add(item.Value);
}
}
return String.Join(", ", items.ToArray());
}