2012-06-20 23 views
2

我有我的窗體上的xtragrid(假設myXtraGridXtra Grid運行時分類數據?

我綁定一個datatable

myXtraGrid.DataSource = dtMyDataTable; 

myXtraGrid.BestFitColumns(); 

比方說,我只有一個columndatatable命名"My Column",它有三個數據rows作爲如下:

My Column 
------ 
3 
1 
2 

比對grid (on runtime),我點擊column header (My Column)和數據排序

(3 1 2) ascending: (1 2 3) 

我的問題是;我怎樣才能得到有序的數據爲Datatable如下?

My Column 
------ 
1 
2 
3 

runtime我必須得到排序數據並處理它。

感謝朋友。

+0

試試這個問題:http://stackoverflow.com/questions/11228449/how-to-get-the -xtragrid-filtered-sorted-sorted-datasource – scotru

回答

0

你可以打一個DataView

dvMyView.Sort = " MyColumn ASC "; 

所以,你有一個排序DataView您可以輕鬆地進行改造,以DataTable再次:

myDataTable = dvMyView.toTable(); 

現在你有一個排序DataSource

myDataView dvMyView = new DataView(myDataTable); 

DataView可以進行排序:-)

P. S在我看來,BestPractice是創建一個objectlist (List<myClass>)。這Objectlist可以排序。另一個優點是,網格中的值改變直接改變列表中的對象!

我希望這是有幫助的。

+0

這是okey,但我不想以編程方式排序數據。在運行時,我點擊列標題,對所有數據進行排序,然後我想要獲取排序或分組數據。我該怎麼做? – user1468360

+0

您可以使用循環運行DataGridView中的所有行,並將它們添加到新的DataTable(更好的是Objectlist!)。在DataGridView的EndSorting Event中執行此操作。所以在排序之後,它會將數據保存在DataTable/Objectlist中。 – Sebi

0

您可以使用DatatableDefaultView和排序視圖和後可轉換爲表

if (dtMyDataTable.Rows.Count > 0) 
{ 
DataView dv = dtMyDataTable.DefaultView; 
dv.Sort = "cy_column ASC"; 
dtMyDataTable= dv.ToTable(); 
} 
+0

這是okey,但我不想以編程方式對數據進行排序。在運行時,我點擊列標題,對所有數據進行排序,然後我想要獲取排序或分組數據。我該怎麼做? – user1468360

+0

對xtragrid不太熟悉,但您可以參考此鏈接:http://support.smartbear.com/viewarticle/30556/ –