使用WPF DataGrid对DataTable进行排序?

时间:2011-04-25 21:44:19

标签: wpf sorting datagrid datatable

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

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

我查找了列标题点击事件 - 没有运气;我试图得到网格当前排序的列的标题 - nada;我试图在DataGridTextColumn模板上使用“Click”EventSetter - 不支持。

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

也许我没有正确地执行检查或某事......?下面是我的检索/输出代码。有人有主意吗???非常感谢您的帮助!

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

1 个答案:

答案 0 :(得分:8)

排序应用于datatable的DefaultView。因此它不会直接应用于Datatable。要访问已排序的表,请使用

DataTable.DefaultView.ToTable()