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问题,我会将数据表绑定到数据网格视图,并在数据网格视图中隐藏所需的列。
我知道这是旧的,但我今天遇到了同样的问题,所以我发布了我的解决方案。我使用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上进行。