第1步:
DataSet dsMain = new DataSet();
dsMain.ReadXml(my xml path);
结果我在dsMain
dstaset中获得了36个数据表。
第2步:
动态创建36 DataGridView
以显示所有数据表。
结果是某些DataGridView
有表但没有数据。有些专栏遗失了。
原因是那些列是自动生成的映射列。它的列名如TabelName_Id。
第3步:
for (int index = 0; index < ds1.Tables.Count; index++)
{
DataTable dtnew = ds1.Tables[index].Copy();
for (int ColCount = 0; ColCount < dtnew.Columns.Count; ColCount++)
{
if (dtnew.Columns[0].ColumnMapping == MappingType.Hidden)
{
dtnew.Columns[0].ColumnMapping = MappingType.Element;
}
}
}
现在该列已显示。但我的问题是我无法获得父自动生成列。
示例:
表1:父母 - &gt;列(PARENT_ID,Col1中,Col2中,COL3)
表格2:儿童 - &gt;列(Child_Id,Col1中,Col2中,COL3,PARENT_ID)
在执行第3步后,我可以在Child表中看到Child_Id,但我无法在Child表中看到Parent_Id。
请帮我摆脱这个。
我的样本xml
<Parent value="25">
<Child>
<Inner></Inner>
</Child>
</Parent>
答案 0 :(得分:2)
在for循环中,你的索引总是0.你的意思是使用ColCount吗?
for (int ColCount = 0; ColCount < dtnew.Columns.Count; ColCount++)
{
if (dtnew.Columns[ColCount].ColumnMapping == MappingType.Hidden)
{
dtnew.Columns[ColCount].ColumnMapping = MappingType.Element;
}
}
上述变化对您的结果有何影响?如果您仍然看到父/子问题,我们可以进一步了解。