【问题标题】:Create custom DataTable which is bindable to WinForms controls?创建可绑定到 WinForms 控件的自定义 DataTable?
【发布时间】:2011-08-25 14:43:06
【问题描述】:

我们的商店主要使用“ADO 对象”(我指的是DataSet、DataTable 和DataRow)来编组数据并在表单和网格中对其进行操作。我们正在尝试为本地 ADO 对象创建商店风格的对应对象,以便我们可以将我们的内部标准强加于它们之上。

实现这一点很简单,但有一个例外:我希望我们的对象可以绑定到控件。

我知道 IList、IBindingList、BindingSource 等,并且已经查看并尝试过这些,但是在使一个类没有硬属性名称可绑定方面我做得不够好.默认情况下,本机 ADO 对象不是强类型的。您可以通过Item 属性(例如row("Age") 或row.Item("Age"))访问列值。我在网上找到的绑定示例处理强类型对象(例如row.Age)。本质上,我们希望创建自定义 ADO 对象(不是从本机对象继承的),它们仍然保留绑定到控件的能力。

是否有一个简单的例子来说明如何实现?

在网格中,我希望从通过row("Name")、row("Age") 和row("Occupation") 公开这些属性的行中看到列Name、Age 和Occupation。这必须是可行的,因为这正是原生 DataTable 和 DataRow 提供的。

这是对 earlier question 的改进。

【问题讨论】:

  • 您的问题是什么?数据表是可绑定的
  • 我认为您在尝试实现“Item(...)”进行绑定时是在叫错树。我尝试制作自己的 DataRow 类型对象,实现“Item(...)”及其所有重载,但在绑定时这些都不会被调用。您需要寻找另一种让控件相信有一个名为“Age”的属性的方法,只是不确定那会是什么......
  • msarchet -- 如果不继承现有的 ADO.NET 类,您如何自己实现一个基本的 DataTable/DataRow(您的所有代码而不是 Microsoft 的)?您的自定义类应该可以绑定到网格和控件。

标签: .net vb.net data-binding ado.net


【解决方案1】:

您似乎需要使用 ITypedList 接口,该接口与 PropertyDescriptor 结合使用。我在这方面找到的最清晰的文章在这里:

http://blog.lab49.com/archives/705

前段时间我自己尝试过,将根据这篇文章再次尝试。

【讨论】:

  • 啊...乍一看,这看起来可能适合我的需要。我会更明确地回来,因为我有时间更全面地阅读并尝试一下。谢谢你的帮助,安迪。
猜你喜欢
  • 2015-01-30
  • 2011-12-01
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 2012-02-09
  • 2011-12-13
  • 2015-02-15
  • 2013-03-29
相关资源
最近更新 更多