【问题标题】:Why are DataTable values not showing on WPF DataGrid when column name contains '/'?当列名包含“/”时,为什么 DataTable 值不显示在 WPF DataGrid 上?
【发布时间】:2014-11-08 21:12:04
【问题描述】:

下面DataTable中第二列的名称是“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();

【问题讨论】:

    标签: c# wpf datagrid datatable


    【解决方案1】:

    好的,我不知道为什么它不起作用,但我确实找到了一种解决方法,方法是使用 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”。

    【讨论】:

    • 感谢您提供此解决方案。我在网上搜索了几个小时,这是迄今为止最好的。正是我想要的。
    【解决方案2】:

    尝试改变 “f/g”

    "f//g" 或 f[/]g

    转义字符

    【讨论】:

    • 试过了,它不起作用,列名显示为“f//g”但没有值。 "f[g" 也会抛出异常。
    • 可能是 SQL,那么您是否在转义 SQL 中的字符?你如何获取数据试试 f[/]g
    • 数据本身在我用来创建 DataRows 的 Dictionary 中(参见上面的代码)
    • 当我尝试“f[/]g”时出现异常 -> “PropertyPath 中的语法错误 'Binding.Path 'f[/]' 中的语法错误 ...'g'。” 。”
    猜你喜欢
    • 2015-09-18
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2011-08-14
    相关资源
    最近更新 更多