2008-12-18 44 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时那样)。

有人曾与此合作可以揭示这一点。