在BindingSource中组合多个列表



我使用BindingSource来收集多个数据库调用中的一些DataGridView

我想做的是将BindingSource.List属性中的所有DataGridView组合为一个,这样我就可以使用DataGridView.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] + ..

DataSource就是object

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

让我们看一个使用绑定到DataTablesDataGridViews的简单示例:

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

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

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

最新更新