问题标签 [bindinglist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
313 浏览

data-binding - .NET DataBinding,从列表中删除项目之前的确认

我有一个 BindingList 作为数据源和一个网格控件,如果用户删除网格中的一行,我希望他得到确认(例如消息框),

我正在使用的网格控件(我猜它们中的大多数),调用具有 void 返回值的 Collection 的 RemoveAt(int index) 方法,即使我将从 bindingList 继承,覆盖该方法或提供一个新的对于它(和其他)的实现,它无济于事,因为网格无法知道用户选择取消操作......

有没有办法只使用数据绑定和库存绑定列表、网格控件来解决这个问题?

我所做的解决方法是:继承表单BindingList,实现ICancellableRemoving(其中包含单个“bool RemoveItem(object item)”。b.从网格继承,覆盖它的remove方法(或类似),检查数据源是否实现了ICancellableRemoving,如果是,调用该方法,检查结果并相应地取消/继续操作。

PS我实现了一个接口,因为BindingList中唯一的“Remove *”方法,它有一个bool返回值是Collection的Remove(T Item),它是通用的......网格不是;)

在此先感谢,埃里克。

0 投票
4 回答
961 浏览

c# - 征求意见:拦截对列表/集合的更改

尽管BindingList<T>ObservableCollection<T>提供了检测列表更改的机制,但它们不支持在更改发生之前检测/拦截更改的机制。

我正在编写几个接口来支持这一点,但我想征求您的意见。

选项 1:列出每种操作的引发事件

在这里,消费者可能会编写如下代码:

选项 2:列表引发单个事件,操作由事件参数确定

在这里,消费者可能会编写如下代码:

背景:我正在编写一组代表 DDD 核心组件的通用接口/类,并且我正在提供源代码(因此需要创建友好的接口)。

这个问题是关于使接口尽可能内聚,以便消费者可以在不丢失核心语义的情况下派生和实现自己的集合。

PS:请不要为每个列表建议使用AddXYZ()RemoveXYZ()方法,因为我已经打折了这个想法。

PPS:我必须包括使用 .NET 2.0 的开发人员 :)


相关问题

0 投票
1 回答
354 浏览

c# - DataGridView 顶部的新项目字段

DataGridView在 .Net 中内置支持在底部添加新项目。最后一行以特殊方式处理。该IBindingSource接口通过 AddNew/EndNew/CancelNew 方法支持这一点。是否可以更改此设置以允许在网格的第一行添加项目?

我知道我可以sourceList.Insert(0, item)一开始就以编程方式做,但细节是魔鬼,我想知道是否已经有办法做到这一点。

数据来自绑定IBindingList(不是数据库)。

0 投票
1 回答
1935 浏览

bindinglist - 如何返回只读绑定列表

我有一个现有的类,它有一个 List,我需要将此 List 更改为 BindingList,但该类有一个属性,该属性返回此列表的 ReadOnlyCollection。重要的是这个列表只能在这个类中修改。现在我必须将此列表更改为 BindingList,以便在列表更改时可以在另一个类中得到通知。为了设置 DataBindingSource.DataSource 以在另一个类中引用此列表,我知道的唯一方法是提供一个返回此 BindingList 的属性,但这将公开列表并提升只读功能。有没有办法在另一个类中设置 DataBindingSource.DataSource 并防止列表暴露给其他类。下面是示例代码

MessageManager 是一个现有的类。有没有办法绑定到 Browser 类中的 messageList 而不会暴露下划线 messageList?

0 投票
1 回答
854 浏览

c# - 将 BindingList 绑定到集合

我有一个返回这样的集合的库:

公共 IEnumerable 警报 { .. }

我想把这个集合变成一个 BindingList 以在 GUI 中使用。使 BindingList 与 IEnumerable 集合保持同步的最佳方法是什么?

编辑:对于这个问题,假设我无法控制库并且实际实现使用列表。
但我不想触碰这段代码。

该库还具有与 AddAlert、RemoveAlert 等良好的界面。使 GUI 与所有这些更改保持同步的最佳方法是什么?

0 投票
2 回答
6736 浏览

c# - 我可以将 LINQ 查询结果转换为 BindingList?

根据我了解到的情况,您不能强制转换为 BindingList,而是可以使用新的 BindingList 包装来自 Linq 查询的结果。但是,这对我不起作用,因为我的原始绑定列表附加了一些事件,我想在我的 LINQ 结果集中维护相同的事件。

例如:

我有我的主要 BindingList 集合,称为“报告”(IReport 类型)。此集合正在注册到如下事件:Reports.AddingNew += OnAddNewXReport;

现在,当我想过滤这个大集合并只提取少数匹配项时,我正在使用 Linq 来获取这个匹配列表。为了使该列表成为 BindingList,我需要执行以下操作:

如您所见,这个新创建的集合在添加新项目时不会触发。

有谁知道如何解决这个问题?无论如何要关闭从原始 BindingList 到“过滤”的 BindingList 的事件订阅?

谢谢您的帮助

0 投票
2 回答
1532 浏览

c# - 使用 DataGridview 编辑列表属性

好的,我有我的自定义课程:

我将 DatagridView1 的 DataSource 设置为 FilesystemEntries:

我已经可以添加和删除行了——这些变化反映在集合上。但是,当我在 DataGridView 中更改 Value 和 Id 时,它们不会保存到投标列表中,id 始终为 0,value 为“”。

我怎样才能使这项工作?我是否需要对 FileItem 实现一些接口以允许编辑属性?

DGV 的 ReadOnly 设置为 false,对所有列都相同。启用编辑、删除和更改。

0 投票
1 回答
1063 浏览

c# - BindingList 投影包装器

有没有一种简单的方法来创建一个BindingList包装器(带有投影),它会随着原始列表的更新而更新?

例如,假设我有一个可变的数字列表,我想在 ComboBox 中将它们表示为十六进制字符串。使用这个包装我可以做这样的事情:

我可以将列表包装成一个新的BindingList,处理所有源事件,更新列表并再次触发这些事件,但我觉得已经有一种更简单的方法。

0 投票
4 回答
6770 浏览

c# - C# 复制 BindingList 的最佳方法是什么?

复制 BindingList 的最佳方法是什么?

只使用 ForEach()?还是有更好的方法?

0 投票
2 回答
951 浏览

c# - C# bindinglist 由 bindinglists 组成

有没有一种简单的方法可以让一个由多个绑定列表组成的绑定列表?即这是列表的“视图”。

也就是说:我有3个列表(list1,list2,list3)。我想要一个始终是 3 个 listx 的并集的列表(我们可以假设 2 个不同的列表中不包含任何对象)。

当然,我可以成功使用 ListChange 属性,但也许有更聪明的方法来做到这一点?