我的问题几乎与此问题相同:Why DataColumn.Caption doesn't work?
但在那里,他手动创建了他的DataTable,而在我的情况下,我通过带有连接字符串的OleDbConnection将它绑定到Access数据库。在该数据库中,我为表的每一列设置了标题,以便我只能执行以下操作:
DataTable t = cnn.Consulta(sSQL); //returns a DataTable with a string SQL select query.
DataGridView dg = new DataGridView();
dg.DataSource = t;
int i = 0;
string caption;
foreach (DataGridViewColumn cln in dg.Columns)
{
caption = t.Columns[i].Caption;
cln.HeaderText = caption;
i++;
}
请注意,我的foreach
块与上面提到的帖子中的解决方案基本相同,但是因为我在Access文件中直接设置了标题,而不是在代码中执行,C#保持将它绑定为列名,就好像它们是空的(???)。
现在想象一下,如果我有大量的桌子,每个桌子都有大量不具有友好名称的列?好吧,无论如何我仍然需要设置大量字幕,但这比编写300行代码将其分配给每个DataColumn更好。
除非有另一个属性我可以存储一个字符串用作标题文本,否则我会坚持这个。