假定你有一个订单表,也许有几百个产品,上十万个订单,那么将其全部载入到Foxtable中是不现实的。
能不能用一个目录树列出所有的产品和客户,当我们双击某个产品或客户时,才加载对应的订单呢?
实现这样的功能,其实很简单:
1、首先我们参考大容量数据的管理,使得打开项目的时候,订单表不会加载任何数据。
2、然后新建一个窗口,窗口中插入一个目录树(TreeView),窗口的AfterLod事件代码设为:
Dim
cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = "SELECT DISTINCT 产品,客户 From {订单}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildDataTree(dt, "","产品", "客户")
这样一旦打开窗口,该目录树列出所有的产品和客户。
3、最后将目录树的NodeMouseDoubleClick事件设为:
Dim
Value()As String
Dim Filter As string
Value = e.Node.FullPath.Split("\")
Select Case e.Node.Level
Case 0
Filter ="[产品] = '" & Value(0) & "'"
Case 1
Filter ="[产品] = '" & Value(0) & "' And [客户] = '" & Value(1) & "'"
End Select
DataTables("订单").LoadFilter = Filter
DataTables("订单").Load()
这样我们只需双击某个节点,既可动态加载对应的订单。