从多个来源显示datagridview中的数据

时间:2012-03-09 11:53:37

标签: c# winforms datagridview

我有这段代码:

        DataTable s = produseTableAdapter.GetData();
        DataTable t = produse_magazinTableAdapter.GetData();
        foreach (DataRow row in s.Rows)
            if (row.ItemArray[2].Equals("consumabile"))
            {
                t.Rows.Add(row);
            }
        dataGridView1.DataSource = t;

问题是dataGridView1显示来自:

的数据
        DataTable t = produse_magazinTableAdapter.GetData();

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的代码,您可以从第一张表中取一行并添加到第二张表中 这不可能直接使用Rows.Add
我认为你应该使用

t.ImportRow(row);

t.LoadDataRow(row.ItemArray, false);

当然,假设您的表具有相同的架构且没有主键违规。

如果produse_magazinTableAdapter.GetData()是否为空,那么你的问题就不清楚了。
如果可以从空表开始,则可以使用相同的模式创建DataTable t = s.Clone();然后使用ImportRow或LoadDataRow

填充行

答案 1 :(得分:0)

一种选择是将两个数据表合并在一起,然后在数据表上使用过滤器。

实际上,您只需将两个数据表合并为一个即可。但是,您需要确保datacolumns的名称和类型相同。例如:

DataTable s = produseTableAdapter.GetData();
DataTable t = produse_magazinTableAdapter.GetData();
s.Merge(t);

BindingSource bs = new BindingSource();
bs.DataSource = s;
bs.Filter = "YourColumnName LIKE '%consumabile%'";
//OR
bs.Filter = "yourColumnName = 'consumabile'";

注意:YourColumnName指的是根据您的代码在ItemArray [2]中命名的列。您可以在datagridview上使用此绑定源,如下所示:

this.grid_yourGrid.DataSource = this.bs;

这将两个数据表组合在一起。有关详细信息,请参阅MSDN:

http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx

合并: http://msdn.microsoft.com/en-us/library/fk68ew7b.aspx

对于绑定源:http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.aspx

希望这有帮助!