【问题标题】:WPF DataGrid - Custom Sorting with DataTable as ItemsSourceWPF DataGrid - 使用 DataTable 作为 ItemsSource 的自定义排序
【发布时间】:2021-04-02 03:49:15
【问题描述】:

使用 DataGrid,我显示了一个 DataTable,其中包含在运行时生成的内容。因此,我不能使用预定义的列。每行包含一个名称作为其第一个元素,然后是可变数量的数据,这些数据通常是数字,但也可能是 null 或字符串 "Invalid"

目前所有数据都被解释为字符串,这会导致对列进行排序导致按字母顺序排列而不是数字顺序的问题,例如“0, 1, 12, 20, 3” 而不是“0, 1, 3, 12, 20”。我试图通过从IComparable<T>(DataGrid 忽略)继承所有显示的数据,或者通过覆盖 DataGrid 的OnSorting() 方法(我只找到假设我使用 ListCollectionViews,而不是 DataTables 的源)来解决这个问题.

有谁知道如何在绑定到运行时生成的 DataTable 的 DataGrid 上实现自定义排序行为?

【问题讨论】:

标签: c# wpf datatable datagrid icomparable


【解决方案1】:

我会使用 DataTable 而不是篡改 DataGrid。

如果无法对 DataTable 的源进行任何操作,您可以使用 DataView 来获取 DataTable 的排序视图(请参阅 DataView.Sort)。

将 DataView 绑定到 DataGrid。

添加一个额外的列并使用 DataColumn.Expression 将字符串值转换为数值并处理 null 和 Invalid 值。

请看这里的例子:

https://docs.microsoft.com/en-us/dotnet/api/system.data.datacolumn.expression?view=netframework-4.8

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 2011-08-23
    • 1970-01-01
    • 2021-11-03
    • 2013-06-16
    • 2011-05-03
    • 2011-08-12
    • 1970-01-01
    • 2017-10-20
    相关资源
    最近更新 更多