首先,快速了解代码的功能。我有两个表格:公司和客户。公司和客户之间有一对多的关系(一家公司可以有很多客户)。为什么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之前正在使用的任何默认排序。
任何想法?
我只是继续前进,并使用DataTable.Select来获取过滤器和排序。我仍然很好奇使用DataViewManager的正确方法是什么 - 或者这只适用于使用DataView? – Alarion 2008-12-18 20:58:45