2010-01-24 56 views
0

我有一個帶有productID和productName的DataView對象, 我從Products Table中獲取所有項目並將它們存儲在緩存中。 我想獲取用戶購買的商品,以便在不使用其他查詢或連接表的情況下購買商品。如何在DataView對象中重新排序項目

即。 產品數據視圖 1.富 2. foo2的 3. Foo3

過濾使用的RowFilter(在的productID(1,3)) UserProducts數據視圖 1.Foo 3.Foo3

現在用戶ProductsBoughtByUser首先買了Foo3,我如何根據正確的(按時間順序排列的)數組重新排列物品。即3 1

感謝

回答

5

這裏是syntax爲DataView.Sort:

private void SortByTwoColumns() 
{ 
    // Get the DefaultViewManager of a DataTable. 
    DataView view = DataTable1.DefaultView; 

    // By default, the first column sorted ascending. 
    view.Sort = "State, ZipCode DESC"; 
} 

從你的原職,這聽起來像你只有產品編號和產品名稱。除非您還檢索購買/訂單日期,否則您無法在內存中對其進行排序。

大概做將日期列(而purchaseDate)添加到您已經使用您的SQL語句的最簡單的事情,然後做一個view.Sort = "PurchaseDate DESC";

這樣的話,你不必再寫聲明或第二次點擊數據庫。

編輯: DataRowView具有整數和字符串索引器。例如: -

foreach (DataRowView row in dataView) 
{ 
    var value = row["COLUMN_NAME"]; 
} 

列存儲爲一個對象,所以你必須檢查null並轉換爲而purchaseDate爲了您的數據類型

+0

用戶資料的保存在會話,即。 3,1 它不是DataView.Sort,它沒有PurchaseDate根據 – eugeneK

+0

@eugeneK進行排序:如果您不想添加必要的列來執行排序,則必須完全重構數據視圖。它會按照FIFO概念進行排序,所以如果他們先購買Foo3,則需要爲Foo3創建一個新的數據表,並按照Foo1的行進行操作。 –

+0

感謝喬爾我的問題是我如何做到這一點,我如何操作DataView並獲得某些行? 我可以用適當的順序在Array上運行循環,而orders [i]需要從DataView中檢索並添加到DataTable中......這更多的是我不知道從DataView的行中獲取數據的問題... 謝謝 – eugeneK