在 asp.net webform 中比较和删除列表框中的项目
Posted
技术标签:
【中文标题】在 asp.net webform 中比较和删除列表框中的项目【英文标题】:Compare & remove items from Listbox in asp.net webform 【发布时间】:2019-04-14 07:34:18 【问题描述】:我在 asp.net webform 应用程序中有两个列表框
LIstBox1 拥有所有项目列表,而 ListBox2 已分配项目。
一个页面加载两个 ListBox1 填充了所有项目 & ListBox2 填充了分配的项目 & 我有一个按钮从 LIstbox2 中删除了分配的项目
var itms1 = ListBox1.Items;
var itms2 = ListBox2.Items;
foreach (var itm in itms2)
if (itms1.Contains(itm)) itms1.Items.Remove(itm);
我收到错误错误,如图所示
我只是想比较 ListBox2 和 ListBox1 并从 ListBox1 中删除匹配的 ListBox2 值。
我尝试了不同的变化,但我不断收到类似的错误,否则它将无法正常工作。
ListBox 将 ProjectName 显示为文本,将 ProjectID 显示为 Listbox 值
我在 .net framework 4.5 上使用 asp.net webform 应用程序
【问题讨论】:
如果要删除它们,为什么首先将它们放在列表框中?只是不要将它们放在列表框中。 这实际上是一个编辑,因此用户可以更改那里的选择,因此我必须显示用户在 listbox2 中之前选择的内容,但我想从 Listbox1 中删除已经存在于 ListBox2 中的相同项目。 【参考方案1】:你可以简单地使用这个:
itms1.RemoveAll( item => itms2.Contains(item));
此代码删除列表 2 中的所有项目
【讨论】:
它没有显示 RemoveAll 选项,而是只显示 Remove & RemoveAt 选项 RemoveAll 没有显示的原因是因为您正在使用 ListBox.ObjectCollection。【参考方案2】:这对我有用
foreach (ListItem itemA in LisyBox2.Items)
for (int i = ListBox1.Items.Count - 1; i > -1; i--)
if (ListBox1.Items[i].Text == itemA.Text)
ListBox1.Items.RemoveAt(i);
【讨论】:
以上是关于在 asp.net webform 中比较和删除列表框中的项目的主要内容,如果未能解决你的问题,请参考以下文章
C# asp.net WebForm 的三层架构配合ListView实现增删改查源码
如何在同一个 Visual Studio 解决方案中设置 ASP Classic 和 ASP.NET WebForm - 用于在 ASP.NET WebForm 中重写 ASP Classic 页面