【问题标题】:Sorting DataTable with WPF DataGrid?使用 WPF DataGrid 对 DataTable 进行排序?
【发布时间】:2011-08-12 14:55:41
【问题描述】:

好吧,这让我发疯了。我花了几个小时试图找出一个简单的解决方案,但我没有运气。

我在 XAML 页面上有一个 [WPF Toolkit] DataGrid,它有一个 DataTable 作为它的 ItemsSource。我的页面上还有一个按钮,用于获取 DataGrid 的 SelectedIndex(选定行)并将其用作函数中的变量,该函数读取该索引处的绑定 DataTable 行并返回一个值。一切正常,直到我单击列标题对其进行排序。它对 DataGrid 进行排序,但不对 DataTable 进行排序,因此我的 SelectedIndex 已更改,但 DataTable 的索引未更改,因此返回错误的值。

我一直在寻找列标题点击事件 - 没有运气;我试图获取当前对网格进行排序的列的标题 - nada;我尝试在 DataGridTextColumn 模板上使用“Click”EventSetter - 不支持。

我完全不知所措。如果 WPF 应该是对 Windows 窗体的改进,为什么要删除一些简单的功能? (你必须绑定数据才能添加行也很愚蠢,只是说。)我可以使用 Windows 窗体 DataGrid 并且不会有任何问题,但是我无法设置它的样式。

也许我没有正确执行检查或其他什么...?下面是我的检索/输出代码。谁有想法???非常感谢您的帮助!

DataRow selectedRow = my_data.Tables[0].Rows[my_grid.SelectedIndex];
MessageBox.Show(selectedRow["ItemName"]);

【问题讨论】:

  • 请显示您正在使用的 XAML 的摘录。我是 WPF 小伙伴,但可能是您不使用 TwoWay 绑定。
  • 我相信双向绑定是由 ItemsSource 属性自动处理的。 biju 在下面的回答正是我所需要的,但无论如何我感谢您的回复!谢谢。

标签: wpf sorting datagrid datatable


【解决方案1】:

排序是应用于数据表的DefaultView。所以它不会直接应用于数据表。访问排序后的表使用

DataTable.DefaultView.ToTable()

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 2010-12-10
    • 2017-06-09
    • 1970-01-01
    • 2011-11-11
    • 2013-11-24
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多