C#如何访问DataGridView中绑定了DataSource的隐藏DataTable列

本文关键字:DataSource 绑定 隐藏 DataTable DataGridView 何访问 访问 | 更新日期: 2023-09-27 18:20:58

我很难访问隐藏在DataTable中的隐藏列,这些列后来在DataGridView 中绑定并访问

详细信息:dtResult是一个DataTable尝试的示例:

dtResult.Columns[i].ColumnMapping = MappingType.Hidden;

dtResult.Columns.RemoveAt(i);

然后存储到DataGridView:的DataSource中

dataGridView.DataSource = dtResult;

访问隐藏列发生错误:"找不到‘活动’列":

dataGridView.SelectedRows[0].Cells["active"].Value.ToString()

那么,DataGridView在将其绑定到DataGridView之前,有没有办法获取中隐藏的隐藏列

请帮帮我~。谢谢

FYI:

I just realized
That DataSource Binding doesn't include Hidden Columns of DataTable.
Means That If DataTable.Column.Count = 10. (2 Hidden)
DataGridView.DataSource = DataTable.
DataGridView.Column.Count == 8. 

所以请引导我提问。如何将那些隐藏列从DataTable 绑定到DataGridView

为什么需要隐藏数据表中的列?UI中的可视性是一个UI问题,我会将数据表绑定到数据网格视图,并在数据网格视图中隐藏所需的列。

C#如何访问DataGridView中绑定了DataSource的隐藏DataTable列

我知道这是旧的,但我今天遇到了同样的问题,所以我发布了我的解决方案。我使用DataSet.ReadXml(Stream)将xml文件转储到DataSet中,而为关系生成的列没有显示在DataGridView中。以下代码循环遍历数据集中每个DataTable中的所有列,并将ColumnMapping属性更改为MappingType.Element。我选择了MappingType.EElement,因为可见列都设置为这样,并且描述适合我的情况:"列映射到XML元素。"

简短回答:将ColumnMapping从MappingType.Hiddden更改为绑定到DataGridView之前未隐藏的内容。

    ...
    DataSet ds;
    ...
    foreach(DataTable dtbl in ds.Tables)
    {
        foreach(DataColumn dcol in dtbl.Columns)
        {
            if (dcol.ColumnMapping == MappingType.Hidden)
            {
                dcol.ColumnMapping = MappingType.Element;
            }
        }
    }
    DataGridView.DataSource = ds;

然后,如果你需要在UI中隐藏它们,你可以在DataGridView上进行。