Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当列名包含'/';?_C#_Wpf_Datagrid_Datatable - Fatal编程技术网

C# 当列名包含'/';?

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");

下面数据表中第二列的名称是“f/g”,当我运行它时,我在屏幕上看不到第二列中的值,这是为什么

顺便说一句,当我把它改成“f:g”时,它可以工作,但“f[g”不能

        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”。“谢谢你提供了这个解决方案。我在网上搜索了几个小时,这是目前为止最好的。这正是我想要的。