2008-12-18 57 views
0

首先,快速瞭解代碼的功能。我有兩個表格:公司和客戶。公司和客戶之間有一對多的關係(一家公司可以有很多客戶)。爲什麼DataViewManager不能排序?

在一些處理邏輯中,我將這兩個表加載到一個DataSet中 - 每個都是DataTables。我添加了一個DataRelation來設置關係,當我在公司表的記錄中使用GetChildRows時,它就起作用。

但是,我需要對返回的記錄進行排序。在Google搜索一下之後,看起來DataViewManager是要走的路,我已經檢查了幾個基本的例子。但是,我無法對我的行進行排序。我錯過了什麼,或者我沒有使用它應該如何使用?示例代碼:

Dim ldvmManager As New DataViewManager(mdsData) 
ldvmManager.DataViewSettings("Companies").Sort = "comName ASC" 
ldvmManager.DataViewSettings("Clients").ApplyDefaultSort = False 
ldvmManager.DataViewSettings("Clients").Sort = "entLastName ASC, entFirstName ASC" 

For Each mdrCurrentCompany in ldvmManager.DataViewSettings("Companies").Table.Rows 
    Dim ldrClients() as DataRow = mdrCurrentCompany.GetChildRows("CompaniesClients") 
Next 

不管我做什麼,返回的第一個客戶有一個「B」和第二啓動具有一個與一個「A」開頭的姓氏。從那裏,訂單都混在一起。如果我使用我的整個數據而不是我用來測試的子集,則返回的第一個客戶端的姓氏以'J'開頭。它似乎仍然使用我試圖使用DataViewManager之前正在使用的任何默認排序。

任何想法?

+0

我只是繼續前進,並使用DataTable.Select來獲取過濾器和排序。我仍然很好奇使用DataViewManager的正確方法是什麼 - 或者這隻適用於使用DataView? – Alarion 2008-12-18 20:58:45

回答

0

我想,你應該使用DataView來獲得DataTable的排序視圖。

查看MSDN文檔,似乎DataViewManager存儲了默認設置(如創建DataTable時那樣)。

有人曾與此合作可以揭示這一點。