C# 添加第二个datatable作为datagridview的行源
我有一个datagridview,我从datatable中填充它,datatable从webservice查询中检索它的数据(针对SalesForce云系统) 从本质上讲,我们希望显示用户从SalesForce案例中删除附件的结果,目前我们查询了一个名为C# 添加第二个datatable作为datagridview的行源,c#,winforms,datagridview,datatable,datasource,C#,Winforms,Datagridview,Datatable,Datasource,我有一个datagridview,我从datatable中填充它,datatable从webservice查询中检索它的数据(针对SalesForce云系统) 从本质上讲,我们希望显示用户从SalesForce案例中删除附件的结果,目前我们查询了一个名为case的SalesForce XML Web服务,并希望添加查询另一个名为credit case的新SalesForce对象的功能 它从一个名为cases的对象获取数据,并将其显示在Windows窗体datagridview控件中,工作正常 现
case
的SalesForce XML Web服务,并希望添加查询另一个名为credit case
的新SalesForce对象的功能
它从一个名为cases的对象获取数据,并将其显示在Windows窗体datagridview控件中,工作正常
现在我们想添加另一个对象(我们称之为creditCases),所以我设置了query all,添加了另一个带有字段和数据类型的任务对象,等等
填充数据集后,我们使用gvTaskCases.DataSource=dtCases设置datagridview的数据源代码>
当然,我现在还有第二个数据源(具有不同的列数),我想将其添加到表中
如果我对新的数据表(gvTaskCases.DataSource=dtcreditCases
)执行此操作,如何阻止它替换现有数据表中的数据
代码:
您可以使用DataTable
的Merge
方法
((DataTable) gvTaskCases.DataSource).Merge(dtcreditCases);
另一种方法是只保留旧的数据表
,您必须使用一点LINQ
来合并数据表
,如下所示:
gvTaskCases.DataSource = (dtCases.Columns.Count > dtcreditCases.Columns.Count ?
dtCases.AsEnumerable().Concat(dtcreditCases.AsEnumerable()) :
dtcreditCases.AsEnumerable().Concat(dtCases.AsEnumerable())).CopyToDataTable();
是否要同时在同一网格中显示旧数据和新数据?你的新数据结构如何?嗯,非常相似,只是可能需要在我的数据表中添加两个空白或空列…@KingKing:我编辑了我的问题以提供更多说明,并添加了代码块,在我隐藏一些列的最后,我想添加第二个datatable。我想另一种方法可能是重用现有datatabledtcases
,但如果可能的话,我想将它们分开。如果不清楚您想要什么,如果您想保留旧的datatable
,可能您必须保留一些对它的引用,并从旧的和新的DataTable
创建一个新的DataTable
,当然这将改变重用的含义。
gvTaskCases.DataSource = (dtCases.Columns.Count > dtcreditCases.Columns.Count ?
dtCases.AsEnumerable().Concat(dtcreditCases.AsEnumerable()) :
dtcreditCases.AsEnumerable().Concat(dtCases.AsEnumerable())).CopyToDataTable();