0

首先,快速了解一下代码在做什么。我有两个表:公司和客户。公司和客户之间存在一对多的关系(一家公司可以有多个客户)。

在某些处理逻辑中,我将两个表都加载到数据集中——每个表都是数据表。我添加了一个 DataRelation 来设置关系,当我对 Companies 表中的记录使用 GetChildRows 时,它可以工作。

但是,我需要对返回的记录进行排序。在搜索了一些之后,看起来 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 之前,它似乎仍在使用任何默认排序。

有任何想法吗?

4

1 回答 1

0

我认为,您应该使用 DataView 来获取 DataTable 的排序视图。

查看 MSDN 文档,似乎 DataViewManager 存储默认设置(与创建时的 DataTable 一样)。

与此有关的人可以对此有所了解。

于 2008-12-18T21:18:49.933 回答