C# 当列名包含'/';?
下面数据表中第二列的名称是“f/g”,当我运行它时,我在屏幕上看不到第二列中的值,这是为什么 顺便说一句,当我把它改成“f:g”时,它可以工作,但“f[g”不能C# 当列名包含'/';?,c#,wpf,datagrid,datatable,C#,Wpf,Datagrid,Datatable,下面数据表中第二列的名称是“f/g”,当我运行它时,我在屏幕上看不到第二列中的值,这是为什么 顺便说一句,当我把它改成“f:g”时,它可以工作,但“f[g”不能 DataTable resultDataTable = new DataTable(); DataColumn id_column = new DataColumn(); id_column.DataType = System.Type.GetType("System.String");
DataTable resultDataTable = new DataTable();
DataColumn id_column = new DataColumn();
id_column.DataType = System.Type.GetType("System.String");
id_column.ColumnName = "ID";
id_column.ReadOnly = true;
id_column.Unique = true;
resultDataTable.Columns.Add(id_column);
DataColumn f_column = new DataColumn();
f_column.DataType = System.Type.GetType("System.Double");
f_column.ColumnName = "f/g";
f_column.ReadOnly = true;
resultDataTable.Columns.Add(f_column);
foreach (var entry in results.Results)
{
DataRow dr = resultDataTable.NewRow();
dr[0] = entry.Key;
dr[1] = entry.Value;
resultDataTable.Rows.Add(dr);
}
ResultsDataGrid.ItemsSource = resultDataTable.AsDataView();
试着改变
“f/g”
到
“f//g”或f[/]g
转义字符好的,我不知道为什么它不起作用,但我确实找到了一种解决方法,使用Column Caption属性并在DataGrid中实现AutoGeneratingColumn事件:
private void ResultsDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
var dGrid = (sender as DataGrid);
if (dGrid == null) return;
var view = dGrid.ItemsSource as DataView;
if (view == null) return;
var table = view.Table;
e.Column.Header = table.Columns[e.Column.Header as String].Caption;
}
基本上,它会获取Caption属性中的任何内容并将其放入DataGrid列标题中,即使是“f/g”。尝试了它,但它不起作用,列名显示为“f//g”,但没有值。此外,“f[g”会引发异常。可能是SQL,那么您正在转义SQL中的字符吗?如何获取数据?请尝试f[/]g数据本身在我用来创建数据行的字典中(见上面的代码),当我尝试“f[/]g”时,我得到了一个异常->“PropertyPath中的语法错误”绑定中的语法错误。路径“f[/]”…“g”。“谢谢你提供了这个解决方案。我在网上搜索了几个小时,这是目前为止最好的。这正是我想要的。