2013-01-22 62 views
0

下面的代碼我正在使用數據庫中的數據進行排序..有兩種不同的方法我嘗試過,而非這些方法實際上工作。另外,訂單是DECS/ASC,而列是指數列I.E 10.數據沒有排序

有沒有人有一個想法,爲什麼這可能是這種情況。

 string[] tosort = sortval.Split('-'); 
     string order = tosort[1]; 
     int colum = Convert.ToInt32(tosort[0]); 
     DataView dv = new DataView(); 
     DataTable dt = new DataTable(); 
     dt = extractedData; 
     string columnName = dt.Columns[colum].ToString(); 
     dt.DefaultView.Sort = columnName + " " + order; 
     // dv = dt.AsDataView(); 
     // dv.Sort = dv.Table.Columns[colum].ColumnName + " " + order; 
    // dv.Sort = dv.Table.Columns[colum].ColumnName + " " + order; 
    // dt = dv.ToTable(); 
     extractedData = dt; 
+0

您提供了太少的信息。顯示樣本數據和(不正確)排序結果以及'sortval'的值。顯示DataTable的列及其類型。 –

+0

但是在DataView上設置排序順序後,如何提取排序值?你應該循環使用DataView而不是DataTable – Steve

+0

開始時在'sortval'中有什麼?對於排序順序,DESC是正確的,DECS是錯誤的值。 –

回答

1

排序不會改變在DataTable它適用於該視圖中的數據的順序,所以你應該實際結合的DataViewdt.DefaultViewdt.DefaultView.ToTable();

1

我在這裏假設了很多,但如果你的排序是正確的,那麼我想你是不是在你的數據正確循環:

// This should follow the correct sort order 
foreach(DataRowView r in extractedData.DefaultView) 
{ 
    Console.WriteLine(r["colName"]); 
} 

,或者,如果你綁定到一個DataGridView

dataGridView.DataSource = extractedData.DefaultView; 
0

DataView.Sort不排序標的DataTable但它的DataView。所以表中的行與之前的順序相同。

您可以使用DataView.ToTable創建從結果產生一個新DataTable

dt.DefaultView.Sort = columnName + " " + order; 
extractedData = dt.DefaultView.ToTable();