【发布时间】:2013-11-05 14:41:45
【问题描述】:
我有一个如下所示的 SQL 表:
orderID customerName orderDate valueTotal
================================================================
1 JohnA 01/02/2013 100
2 AmandaF 01/02/2013 140
3 JohnA 05/03/2013 58
4 FredM 05/03/2013 200
我想通过orderDate 或customerName 在treeView 上订购此信息,具体取决于用户设置,因此如果按customerName 订购,它看起来像这样:
JohnA
01/02/2013
05/03/2013
AmandaF
01/02/2013
FredM
05/03/2013
如果按orderDate排序,则像这样:
01/02/2013
JohnA
AmandaF
05/03/2013
JohnA
FredM
实现这一目标的最佳方法是什么?
编辑: 我正在使用 Windows 窗体
【问题讨论】:
-
如何检索数据?您使用 Entity Foundation 还是 ADO.Net?您的数据是如何存储在程序中的?
-
通过查询以正确的顺序排序,那么当您可以对数据的结构做出假设时,应该很容易在代码中构建树。
-
@DavidS.,我认为与其说是排序,不如说是关于分组。至少这是我从问题中理解的。
-
更多的是对排序进行分组,没错。我的看法是,按需加载每一层可能更有意义,并使 UI 响应更灵敏。这样我就不得不从数据库中做更多的选择,但选择会非常简单。即:选择唯一的 orderDate,然后当用户扩展日期时,我会执行 Select unique customerName where orderDate =
-
这就是为什么我询问数据是如何在内部存储的。您可以将所有内容加载到一个数据库访问中,然后只需使用
GroupBy()扩展方法。之后您可以迭代结果并将组添加到您的子树中。