2011-04-25 140 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()