DataSet.Merge problem

  • Thread starter Thread starter J055
  • Start date Start date
J

J055

Hi

This code does not update the copyTbl rows. I.e. when the copyTbl object is
merged into the dataset actions on the rows of this table are not reflected
in the copyTbl. I want the copyTbl to reflect changes made to the
ds.Tables["Sets"].Rows.

private void PopulateCopyTableFromGroupsTable(DataTable copyTbl)
{
DataSet ds = new DataSet();
DataTable groupsTbl = new GroupsBLL().GetAll();

ds.Merge(groupsTbl);
ds.Merge(copyTbl);

DataRelation relation =
ds.Relations.Add(ds.Tables["Groups"].Columns["GroupID"],
ds.Tables["Sets"].Columns["GroupID"]);

DataRow groupRow;

foreach (DataRow setRow in ds.Tables["Sets"].Rows)
{
groupRow = setRow.GetParentRow(relation);

setRow["GroupCode"] = groupRow["Code"];
}
}

How should I do this?

Thanks
Andrew
 
OK

I added these lines to the end of the method:

copyTbl.Clear();
copyTbl.Merge(ds.Tables["Sets"]);


But is that really the best approach? Seems like there may be unnecessary
operations here?

Thanks
Andrew
 
Hello Andrew,

The implement of Merge method copies each row of source datatable, thus
there is no relationship between the original table and the merged table.
The change what you made in merged table will not reflect to the original
table.

Clearing the copyTbl table and populating it again is the correct way.
However, this is not the best way. What you need is Add() method, rather
than Merge(). Merge meaning copy the original rows into target table.

You could add copyTbl and groupsTbl tables into dataset, build relationship
and modify dataset.
All actions will also reflect to the copyTbl table.
Such as:
DataSet ds = new DataSet();
DataTable groupsTbl = new GroupsBLL().GetAll();

* ds.Tables.Add(groupsTbl);
* ds.Tables.Add(copyTbl);

DataRelation relation
=ds.Relations.Add(ds.Tables["Groups"].Columns["GroupID"],ds.Tables["Sets"].C
olumns["GroupID"]);
DataRow groupRow;
foreach (DataRow setRow in ds.Tables["Sets"].Rows)
{
groupRow = setRow.GetParentRow(relation);
setRow["GroupCode"] = groupRow["Code"];
}

Hope this helps. Please let me know if you meet any further issue.
Sincerely,
Wen Yuan
Microsoft Online Community Support
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
 
Hello Andrew,

I have not heard from you a couple of days. Have you resolved the issue so
far?
Please feel free to update here if you meet any further issue. I'm glad to
assist you.

Have a great day,
Sincerely,
Wen Yuan
Microsoft Online Community Support
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
 
Back
Top