2011-04-25 134 views
3

好吧,这让我疯狂。我花了几个小时试图弄清楚什么应该是一个简单的解决方案,但我没有运气。使用WPF DataGrid对DataTable进行排序?

我有一个DataTable作为其ItemsSource有一个DataTable的XAML页面上的[WPF Toolkit] DataGrid。我的页面上也有一个按钮,它获取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"]); 
+0

请出示XAML你的摘录使用。我是一个WPF结点,但它可能是你不使用双向绑定的问题。 – RedDeckWins 2011-04-25 22:36:06

+0

我相信双向绑定是通过ItemsSource属性自动完成的。以下biju的答案提供了我所需要的东西,但无论如何,我非常感谢您的回复!谢谢。 – 2011-04-26 13:08:22

回答

7

的排序被应用到默认视图的datatable.So它不会被应用到DataTable directly.To访问排序表使用

DataTable.DefaultView.ToTable()