问题标签 [bindingsource]

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 投票
3 回答
4577 浏览

c# - 我可以从 BindingSource 获取项目类型吗?

我想获取 BindingSource 连接或配置的项目的类型。BindingSource.DataSource 属性可以设置为对象、列表或类型。如果是Type,显然还没有绑定项,但我还是想得到Type。对于列表,我需要项目类型,而不是列表类型。

我目前有一个用于实现 IListItemType 接口的业务对象的自定义列表类型,我创建它是为了解决这个问题。我现在想让它以更通用的方式工作,以便它适用于任何列表。

我已经查看了 API 文档,寻找一种很好的方法来做到这一点,但到目前为止我还没有运气。我错过了什么,或者这只是我不能或不应该做的事情?

0 投票
3 回答
9624 浏览

.net - 什么时候值得使用 BindingSource?

我想我非常了解 BindingSource 类的作用——即在数据源和 UI 控件之间提供一个间接层。它实现了 IBindingList 接口,因此还提供了对排序的支持。而且我已经使用它足够频繁,没有太多问题。但我想知道我是否经常使用它。也许一个例子会有所帮助。

假设我在表单上只有一个简单的文本框(使用 WinForms),我想将该文本框绑定到返回字符串的类中的一个简单属性。在这种情况下是否值得使用 BindingSource?

现在假设我的表单上有一个网格,我想将它绑定到一个 DataTable。我现在应该使用 BindingSource 吗?

在后一种情况下,我可能不会使用 BindingSource,因为我可以收集到的数据表提供与 BindingSource 本身相同的功能。当添加、删除行等时,DataTable 将触发正确的事件,以便网格自动更新。

但在文本框绑定到字符串的第一种情况下,我可能会让包含字符串属性的类实现 INotifyPropertyChanged,以便在字符串更改时触发 PropertyChanged 事件。我将使用 BindingSource 以便它可以侦听这些 PropertyChanged 事件,以便在字符串更改时自动更新文本框。

到目前为止听起来如何?我仍然觉得我的理解存在差距,这使我无法看到整个画面。到目前为止,这是一个相当模糊的问题,所以我会尝试提出一些更具体的问题——理想情况下,答案将参考上述示例或类似的东西......

(1) 在上述任何一个示例中都值得使用 BindingSource 吗?

(2) 似乎开发人员只是“假设”DataTable 类会做正确的事情,在正确的时间触发 PropertyChanged 事件。如何知道数据源是否能够做到这一点?为了让开发人员能够承担这种行为,数据源是否应该实现特定的接口?

(3) 在考虑是否使用 BindingSource 时,绑定什么 Control 是否重要?还是只有数据源会影响决策?也许答案是(这似乎很合乎逻辑):控件需要足够智能以侦听 PropertyChanged 事件,否则需要 BindingSource。那么如何判断 Control 是否有能力做到这一点呢?同样,开发人员是否可以寻找控件必须实现的特定接口?

过去,正是这种困惑导致我总是使用 BindingSource。但我想更好地了解何时使用一个,以便我只在必要时这样做。

0 投票
1 回答
2431 浏览

c# - 在存在 BindingNavigator 的情况下绑定 ListBox 的 SelectedItem

我正在尝试将 ListBox 的 SelectedItem 数据绑定到属性。以下代码是一个示例:

如果您只是选择一个项目,向前移动,选择一个项目然后退出,它会按预期工作。但是,如果您使用导航器在两个外部对象之间来回切换,则所选项目似乎被错误的值覆盖。似乎每次 BindingNavigator 移动到元素时,ListBox 都会被告知移动到其集合中的第一项,从而覆盖绑定到其 SelectedItem 的变量中的任何值。

关于如何解决这个问题的想法?提前致谢。

编辑:这是示例项目的存档,包括调试二进制文件。

http://www.mediafire.com/?dzmqmz0mynj

编辑:这是基于接受的答案的辅助函数:

0 投票
1 回答
315 浏览

.net - 我可以暂时阻止对 DataGridView 的手动更改以更新基础数据源吗?

我试图找到另一个像这样的问题,因为它确实看起来像是以前可能被问过的问题;但我找不到它。

基本上,我有一个DataGridView,它绑定到一个BindingList<T>. 我知道,总的来说,数据绑定非常好,并且可以节省大量(我们的开发人员的)时间。然而,这个网格存在一个非常大的性能问题。

根据以前的经验,我相当有信心通过手动更新计时器中的可见单元格DataGridView而不是实现来大大提高性能INotifyPropertyChanged(这不是一个真正可行的选择,因为此网格中的许多值每次更改数十次第二)或打电话Refresh。但是有一个问题:如果我手动一个一个地更新网格中的单元格,每次更新都会触发set数据绑定对象的相应属性,加起来会导致性能显着下降。

确实没有必要进行所有这些set调用,因为我放入网格单元格的值是直接这些属性中检索的(所以我基​​本上是在读取一个值,然后将其写回自身)。

如果我可以暂时禁用DataGridView: 的此功能,暂时关闭负责根据网格更新更新底层数据源的功能,那就太好了。然后,当我手动完成更新后,重新打开该功能,以便用户的更新确实会影响数据源。

我尝试使用 aBindingSource并将其DataSource属性设置为BindingList<T>并调用SuspendBinding/ ResumeBinding; 但这似乎不起作用。set电话还在继续。

有什么方法可以完成我在这里的目标吗?我是否完全走错了路?

0 投票
2 回答
1244 浏览

c# - 使用 BindingSource,我如何判断我是否有待处理的更改?

我在编辑 SQL 服务器上的简单表的 WinForms 项目中使用 BindingSource。如果用户更改了字段,我希望“保存”图标亮起。我已经尝试过 DataSet 的 HasChanges() 方法,但是在我进行更改后返回 false。

如何判断用户是否更改了某些内容?

0 投票
1 回答
18945 浏览

c# - 访问 bindingsource 列值

如何使用代码更新绑定源中的列值?

我正在尝试类似的东西:

此代码当前错误说明:“无法将带有 [] 的索引应用于‘对象’类型的表达式”。

非常感谢您对重写此内容的任何帮助!

0 投票
1 回答
5824 浏览

winforms - 如何在更新 Datagridview 时找到基础 Datatable 中哪些行已更新?

这就是我想要实现的目标:

  1. 使用来自非数据库源的数据填充的 DataTable
  2. 此表使用 BindingSource 绑定到 DataGridView
  3. DataGridView 由用户更新,因此某些单元格现在具有新值。
  4. 因为表绑定到 datagridview,所以它的值会被更新。

如何在网格/数据表中仅获取更新的行(已编辑的行)?

我试过了 :

但这总是返回 0 行。有没有办法只获取修改后的行?

最差的情况:

  • 保留原始表格的副本
  • 从 datagridview 数据源中获取新表
  • 比较所有行。

谢谢!

0 投票
2 回答
3864 浏览

c# - 时间:2019-04-01 标签:c#bindingsource和linq

我有一个绑定源,已由

tableadapter.fill(DS, param1);

可以说这个绑定源有:

如何使用 linq 获取给定 char 'A' 的 num 值?

我可以使用 foreach(this.p_EM_Select_Event_TypeBindingSource 中的 DataRowView 数据)识字,但我想知道如何在 linq 中执行此操作

谢谢,

0 投票
1 回答
1351 浏览

c# - 通过 DataTable.Select、BindingSource 和 foreach(C#、ADO.NET)进行搜索

我有一个 DataTable X,如果我现在想搜索某个条目,使用 BindingSource.Filter、X.Select() 还是只使用 foreach 会更快/更好吗?

0 投票
0 回答
500 浏览

c# - 具有自我跟踪实体的实体框架过滤器导航属性

我正在使用自我跟踪实体,并且有一个场景,我有一个实体,它代表一个我们将称为表 A 的表。A 是另一个表 B 的父级,该表也表示为一个实体。在我的 WinForm 上,我有 3 个不同的绑定源,每个绑定源代表表 B 中不同类型的记录,但都是表 A 的子项。所以我想要完成的是使用实体/表 B 的导航属性来设置每个绑定源

例如

理想情况下,每个绑定源的 DataSource 将是 TrackableCollection 类型,因此当我保存 A 时,对 B 的 3 个过滤实例的所有更改也会被保存。

我为此尝试了一些不同的选择,但没有任何运气,所以我希望其他人也遇到过同样的情况。

谢谢!