代码之家  ›  专栏  ›  技术社区  ›  Jimenemex

在BindingSource中组合多个列表

  •  1
  • Jimenemex  · 技术社区  · 6 年前

    我用的是 BindingSource 收集一些 DataGridView 在多个数据库调用上。

    我想做的是把所有 数据表格控件 s在 .List 财产 绑定源 变成一个这样我就可以用 DataGridView.DataSource = BindingSource .

    我尝试过以下操作,但它只绑定集合本身,而不绑定 .列表 财产。

    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] + ..
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   TaW    6 年前

    DataSource object .

    所以你需要 了解更多 关于您正在使用的实际DS;然后您可以(可能使用合适的 Cast<> ) Concat (或) Union )各种枚举。

    让我们看一个简单的例子 DataGridViews 一定会 DataTables :

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

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

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