在 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 页面

ASP.NET WebForm 之 Ajax 请求后端处理

浅析ASP.NET Webform和ASP.NET MVC

如何在 ASP.NET WebForms 中触发模式窗口?

如何在asp.net C# Webform中制作像网格一样的Excel