【发布时间】:2013-10-23 00:18:26
【问题描述】:
我有一个 datagridview,我从一个数据表中填充它,然后从 web 服务查询中检索它的数据(针对 SalesForce 云系统)。
本质上,我们希望显示尝试从用户放置的 SalesForce 案例中删除附件的结果,目前我们查询一个名为 case 的 SalesForce XML Web 服务,并且我们希望添加查询的功能第二个名为 credit case 的新 SalesForce 对象。
它从一个名为 case 的对象中获取数据并在 Windows 窗体 datagridview 控件中显示它们的工作正常。
现在我们要添加另一个对象(我们称之为 creditCases),所以我已经设置了查询,添加了另一个包含字段和数据类型的任务对象等等。
填充数据集后,我们使用 gvTaskCases.DataSource = dtCases; 设置 datagridview 的数据源
当然,我现在有第二个数据源(具有不同数量的列)要添加到表中。
如果我对我的新数据表 (gvTaskCases.DataSource = dtcreditCases) 执行此操作,如何阻止它替换现有数据表中的数据?
代码:
gvTaskCases.DataSource = null;
dtCases.Rows.Clear();
foreach (task_cases item in cases)
{
DataRow drCases = dtCases.NewRow();
// Then add the new row to the collection.
drCases["Case ID"] = item.c_Id;
drCases["Case Number"] = item.c_Number;
drCases["Case Topic"] = item.c_Topic;
drCases["Case SubTopic"] = item.c_Subtopic;
drCases["Account Number"] = item.c_CustomerNumber;
drCases["Additional Info"] = item.c_AdditionalInfo;
drCases["Closed Date"] = Convert.ToDateTime(item.c_ClosedDate).ToString("dd/MM/yyyy");
drCases["Attachment"] = item.c_Attachment;
drCases["Content Type"] = item.c_ContentType;
drCases["Detach Status"] = item.c_Status;
drCases["Document Type"] = item.c_DocumentType;
drCases["Imaging Directory"] = item.c_ImagingDSXDirectory;
drCases["Imaging Document"] = item.c_ImagingDocument;
dtCases.Rows.Add(drCases);
}
gvTaskCases.DataSource = dtCases;
gvTaskCases.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
gvTaskCases.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
foreach (task_creditcases item in creditCases)
{
DataRow drCases = dtCases.NewRow();
// Then add the new row to the collection.
drCases["Case ID"] = item.c_Id;
drCases["Case Number"] = item.c_Name; // SalesForece Credit Case Object CASE NUMBER;
drCases["Account Number"] = item.c_Account__c;
drCases["Closed Date"] = Convert.ToDateTime(item.c_Closed_Date__c).ToString("dd/MM/yyyy");
drCases["Attachment"] = item.c_Imaging_Document_Attached__c;
drCases["Detach Status"] = item.c_Status__c;
drCases["Document Type"] = item.c_Document_Type__c;
drCases["Imaging Directory"] = item.c_Directories__c;
drCases["Imaging Document"] = item.c_Imaging_Document;
dtCases.Rows.Add(drCases);
}
// add the new records:
// Adjust size & hide columns that aren't needed
gvTaskCases.Columns[0].Visible = false;
gvTaskCases.Columns[11].Visible = false;
gvTaskCases.Columns[12].Visible = false;
gvTaskCases.Columns[13].Visible = false;
【问题讨论】:
-
您想在同一个网格中同时显示旧数据和新数据吗?你的新数据的结构如何?
-
嗯,非常相似,只是可能需要在我的数据表中添加几个空白或空列...
-
@KingKing:我已经编辑了我的问题以提供更多说明,并添加了代码块,在我隐藏一些列的最后是我想要添加第二个数据表的地方
-
我想另一种方法可能是重用现有的数据表
dtcases,但如果可能的话,我想将它们分开 -
不清楚你想要什么,如果你想保留旧的
DataTable,可能你必须保留一些对它的引用并创建一个新的DataTable新旧DataTable,当然会改变reuse的含义。
标签: c# winforms datagridview datatable datasource