首页 > 解决方案 > 在 BindingSource 中合并多个列表

问题描述

我正在使用 aBindingSource来收集DataGridView多个数据库调用的一些 s。

我想要做的是将 属性中的所有DataGridViews合并为一个,这样我就可以使用..ListBindingSourceDataGridView.DataSource = BindingSource

我尝试了以下方法,但它只绑定集合本身而不是.List属性。

BindingSource _bindingSource = new BindingSource();
...
...
while(<doing database calls>) {
    // Populate _DataGridView with some a DB Call

    _bindingSource.Add(_DataGridView); // Add _DataGridView to the _bindingSource
}
DataGrid.Datasource = _bindingSource;

我想要的是这样的

// Populate _bindingSource with the .List property/or all the items within _bindingSource 
DataGrid.Datasource = _bindingSource[0] + _bindingSource[1] + ..

标签: c#winformsdata-bindingdatagridviewodp.net

解决方案


DataSourceobject

因此,您需要了解更多有关您正在使用的实际 DS 的信息;那么你可以(也许使用合适的Cast<>Concat(或Union)各种枚举。

让我们看一个使用DataGridViewsthat are bound to的简单示例DataTables

var twoDataSources = ((DataTable)dataGridView1.DataSource).Select()
             .Concat(((DataTable)dataGridView2.DataSource).Select());

var twoDataSources = ((DataTable)dataGridView1.DataSource).Select()
              .Union(((DataTable)dataGridView2.DataSource).Select());

第一个示例包含每个表中的每一行;秒包含所有唯一行。

如果您需要更多帮助,请添加创建数据源的实际代码。(当然它们必须是现场兼容的..)


推荐阅读