我有这段代码:
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();
我该如何解决这个问题?
答案 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
希望这有帮助!