【问题标题】:C# DataTable chance columnmapping valueC# DataTable 机会列映射值
【发布时间】:2014-03-28 17:25:17
【问题描述】:

第 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:Parent-> Columns(Parent_Id,Col1,Col2,Col3)

表 2:子级 -> 列(Child_Id,Col1,Col2,Col3,Parent_Id)

在执行第 3 步之后,我可以在 Child 表中看到 Child_Id,但在 Child 表中看不到 Parent_Id。

请帮我摆脱困境。

我的示例 xml

<Parent value="25">
<Child>
<Inner></Inner>
</Child>
</Parent>

【问题讨论】:

    标签: c# datagridview datatable


    【解决方案1】:

    在 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;
       }
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-19
      • 2023-04-09
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      相关资源
      最近更新 更多