C#DataTable机会列映射值

时间:2014-03-28 17:25:17

标签: c# datagridview datatable

第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>

1 个答案:

答案 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;
   }
}

上述变化对您的结果有何影响?如果您仍然看到父/子问题,我们可以进一步了解。