如何避免从一个CheckBoxList添加到另一个CheckBoxList的重复项

时间:2012-09-22 16:40:42

标签: c# asp.net

从一个CheckBoxList向另一个CheckBoxList添加项目时如何使用asp.net c#检查该项目是否已存在于第二个CheckBoxList

我在CheckBoxLists之间移动的代码是:

protected void add_Click(object sender, EventArgs e)
    {
        for (int i = 0; i <= CheckBoxList2.Items.Count - 1; i++)
        {
            if (CheckBoxList2.Items[i].Selected)
            {
                CheckBoxList3.Items.Add(CheckBoxList2.Items[i]);
                CheckBoxList3.ClearSelection();
            }
        }
    }

我正在使用 add_Click 按钮在列表之间移动项目。 我需要在添加项目时进行验证。

请帮助。谢谢.. !!

3 个答案:

答案 0 :(得分:3)

来自@ {Joel-Coehoorn的another answer

  

您需要System.Linq的using指令。 .Where()是IEnumerable(IList实现)的扩展方法,它在System.Linq命名空间中定义。

首先获取所有选定的项目

var checkedItems = CheckBoxList2.Items.Where(i => i.Selected);

然后迭代。

foreach(var item in checkedItems)
{
   if(!CheckBoxList3.Items.Contains(item))
   {
       CheckBoxList3.Items.Add(item)
   }
}

应该没问题。

答案 1 :(得分:1)

这将有效: -

for (int i = 0; i <= CheckBoxList2.Items.Count - 1; i++)
        {
            if (CheckBoxList2.Items[i].Selected)
            {
                CheckBoxList4.Items.Add(CheckBoxList2.Items[i].ToString().Trim());

            }
        }

foreach (ListItem item in CheckBoxList4.Items)
        {
            if (!CheckBoxList3.Items.Contains(item))
            {
                CheckBoxList3.Items.Add(item);
            }
        }

答案 2 :(得分:0)

不使用第三个CheckBoxList ..(修改上面的和)

 foreach (ListItem li in CheckBoxList1.Items)
    {
        if (li.Selected)
        {
            if (!CheckBoxList2.Items.Contains(li))
            {
                CheckBoxList2.Items.Add(li);  
            }
        }

    }