【问题标题】:Foreign-key-columns missing in datagridviewdatagridview 中缺少外键列
【发布时间】:2018-10-12 14:24:04
【问题描述】:

我想在 datagridview 中检索数据表的所有数据。

dataGridView1.DataSource = dataTable1;

好的,这很简单,但问题是,并非所有列都已创建。所有外键列都丢失了。这似乎是默认行为。我不想关闭 AutoGenerateColumns-property 并手动创建列。

有没有一种简单的方法可以在 datagridview 中生成真正的所有列?

【问题讨论】:

  • 您能否手动计算 DataGridView 中显示的列数并放置 MessageBox.Show(dataTable1.Columns.Count.ToString()); 并检查该数字
  • 数字相同。缺少的列尚未创建。
  • 这意味着问题不在于您编写的代码,而是您填充数据表的代码。你能把那个贴出来吗?

标签: c# winforms datagridview


【解决方案1】:

我找到了适合我的解决方案...

负责该行为的是列的列映射属性。将其从 MappingType.Hidden 切换到 MappingType.Element 可防止内部列生成算法过滤列出去。

List<DataColumn> ldc_recover = new List<DataColumn>(); 

foreach (DataColumn dataColumn in dataTable1.Columns)
{
    if (dataColumn.ColumnMapping == MappingType.Hidden)
    {
        dataColumn.ColumnMapping = MappingType.Element;
        ldc_recover.Add(dataColumn);
    }
}

// Fill the datagridview with data from datatable
dataGridView1.DataSource = dataTable1;

// Restore the previous columnmapping-property
foreach (DataColumn dc_enum in ldc_recover)
{
    dc_enum.ColumnMapping = MappingType.Hidden;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 2021-01-25
    • 2015-07-01
    • 1970-01-01
    相关资源
    最近更新 更多