【发布时间】:2014-11-17 09:18:26
【问题描述】:
我继承了多个具有不同列名的数据表,这些数据表当前都显示在它们自己的 DataGridView 中。我想创建一个新的附加 DataGridView,将它们全部显示在一个 DataGridView 中。例如(非常简化):
public class DataTableA: DataTable
{
public DataTableA()
{
this.Columns.Add("DateA", typeof(string));
this.Columns.Add("PriceA", typeof(string));
this.Columns.Add("SomeOtherFieldA", typeof(string));
}
}
public class DataTableB: DataTable
{
public DataTableB()
{
this.Columns.Add("DateB", typeof(string));
this.Columns.Add("PriceB", typeof(string));
this.Columns.Add("SomeOtherFieldB", typeof(string));
}
}
我想将 DataTableA.DateA 和 DataTableB.DateB 的值显示在单个列中,并将 DataTableA.PriceA 和 DataTableB.PriceB 的值显示在新 DataGridView 的单个列中。我一直在探索制作一个通用的基类或接口,但还没有多少运气。在不更改列名(不是选项)的情况下,是否可以创建一个能够在同一列中显示两者的绑定?
编辑:
不幸的是,我不认为简单地将 DataTables 合并或聚合到一个新的 DataTable 中会起作用,因为系统的设计使得 DataTableX 类(例如,DataTableA 和 DataTableB)中有逻辑来处理推送数据并更新相应的行数据表。
另外,我不是试图将多个 DataTables 中的 行 合并到一行中,而是试图在 DataGridView 的一个列中显示具有不同名称的多个列。例如,假设有这样的数据:
数据表A:
日期A 价格A SomeOtherFieldA 20141118 2.0个 20141119 3.0 b数据表B:
日期B 价格B 其他字段B 20141118 4.0 c 20141119 5.0 天我想在 DataGridView 中显示以下内容:
日期价格 20141118 2.0 20141119 3.0 20141118 4.0 20141119 5.0
【问题讨论】:
-
你还可以为聚合表再创建一个类,它将DataTableA和DataTableB作为构造函数的参数,并根据需要将数据放在那里。
-
您将两个数据表中的数据复制到第三个数据表中。您可以通过处理前两个数据表中的更改事件来保持前两个数据表与第三个数据表同步。
-
@Tarik - 您能否详细说明如何在复制数据后保持数据表同步?
-
您可以响应 RowChanged、RowDeleted 等 DataTable 事件,并相应地刷新第三个 DataTable。DataTable 事件的完整列表见msdn.microsoft.com/en-us/library/…。
标签: c# winforms datagridview datatable