【问题标题】:Check Box list collection was modified enumeration operation may not execute复选框列表集合被修改枚举操作可能无法执行
【发布时间】:2015-07-13 11:50:20
【问题描述】:

我在这个问题中看到了很多例子,但还没有结束。我尝试了所有这些EXAMPLES。我正在尝试从数据库中删除绑定的空复选框列表。

DataSet ds4 = getCheckBox(ViewState["id"].ToString());
        chkEnvironment.DataSource = ds4;
        chkEnvironment.DataTextField = "Environment";
        chkEnvironment.DataValueField = "Environmentid";
        chkEnvironment.DataBind();

但它在我的页面中显示空复选框。怎么做

protected void chkEnvironment_DataBound(object sender, EventArgs e)
    {
        foreach (ListItem item in chkEnvironment.Items)
        {
            if (item.Value == "NULL")
            {
                chkEnvironment.Items.Remove(item);
            }
        }
    }

【问题讨论】:

    标签: c# asp.net .net checkbox checkboxlist


    【解决方案1】:

    您不能在枚举期间修改集合。您可以存储以后要删除的项目:

    var itemsToRemove = new List<ListItem>();
    foreach (ListItem item in chkEnvironment.Items)
    {
        if (item.Value == "NULL")
        {
            itemsToRemove.Add(item);
        }
    }
    foreach(var item in  itemsToRemove)                 
        chkEnvironment.Items.Remove(item);
    

    与 LINQ 相同:

    var itemsToRemove = chkEnvironment.Items.Cast<ListItem>()
        .Where(i => i.Value ==  "NULL")
        .ToList();
    foreach(var item in  itemsToRemove)                 
        chkEnvironment.Items.Remove(item);
    

    【讨论】:

    • @Vikram:你用过调试器吗,foreach(或LINQ查询)之后的列表是空的吗?值真的是 "NULL""null" 还是 Text 属性?
    • @Vikram:您也可以在 DataSet 之前将它们从 DataSet 中删除。
    猜你喜欢
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多