以编程方式使用选中的选项填充CheckBoxList

时间:2012-12-06 09:09:42

标签: c# asp.net .net

我觉得我在这里遗漏了一些关于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);

他们仍然没有按照检查

加载

3 个答案:

答案 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.EnabledListItem.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());
}