我在窗口事件里设置这个代码,自动生成目录树:
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.BuildTree("管理表", "管理项目|客户编号|合同编号")
在目录树的单击按钮中放入此代码:
'Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
'Dim s As String = e.Sender.SelectedNode.Text
For Each t As Table In Tables
If s= t.name Then
e.Form.StopRedraw
Dim sp As WinForm.SplitContainer
sp = e.Form.CreateControl("SplitContainer3", ControlTypeEnum.SplitContainer)
e.Form.Controls("SplitContainer2").Panel2.AddControl(sp)
sp.Dock = Windows.Forms.DockStyle.Fill
sp.BorderStyle=Windows.Forms.BorderStyle.Fixed3D
sp.Orientation = System.Windows.Forms.Orientation.Horizontal
e.Form.Controls("SplitContainer3").Panel2.Collapsed = True
Dim tbl1 As WinForm.Table
tbl1 = e.Form.CreateTable("Table1", s,False)
e.Form.Controls("SplitContainer3").Panel1.AddControl(tbl1)
tbl1.Dock = Windows.Forms.DockStyle.Fill
Tables(s).Focus
e.form.ResumeRedraw
End If
Next
我在双击的节点:
Dim s As String = e.Sender.SelectedNode.Text
For Each t As Table In Tables
If s= t.name Then
Dim Value()As String
Value = e.Node.FullPath.Split("\")
Select Case e.Node.Level
Case 0
Tables(s).Filter ="[客户编号] = '" & Value(0) & "'"
Case 1
Tables(s).Filter ="[客户编号] = '" & Value(0) & "' And [合同编号] = '" & Value(1) & "'"
End Select
End If
Next
这个筛选不起作用.我要跟着第一个节点筛选客户编号,根据第二个节点筛选合同编号,我把e.Node.FullPath.Split("\")改成 s.Split("\")也没有用.
应该怎么修改这个筛选代码?
messagebox.show(tables(s).Filter)
For Each dr As DataRow In DataTables("管理表").DataRows
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
For Each nd As WinForm.TreeNode In trv.AllNodes
If nd.Text.Contains(dr("管理项目")) Then
trv.SelectedNode = nd
Dim Value()As String
Value = e.Node.FullPath.Split("\")
Select Case e.Node.Level
Case 1
Tables(Nd.Text).Filter ="[客户名称] = '" & Value(1) & "'"
Case 2
Tables(Nd.Text).Filter ="[客户名称] = '" & Value(1) & "' And [合同编号] = '" & Value(2) & "'"
End Select
End If
Next
Next
帮我看一下,我这段代码为什么是所有表都筛选,而不是当前表筛选.
估计都和我一样,没有看懂你的代码,不过你的代码肯定不是筛选当前表,你的代码筛选了好多好多好多次:
For Each dr As DataRow In DataTables("管理表").DataRows
For Each nd As WinForm.TreeNode In trv.AllNodes
Tables(Nd.Text).Filter = “xxx”
Next
Next
这样的代码,如果有100行,目录树有100个节点,最多就有删选了10000次,至少了筛选了100此,而且表名是nd.text,并不是当前表。
那老大,
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")tr.BuildTree("管理表", "管理项目|客户编号|合同编号")
这个代码生成目录树
客户编号和合同编码全部按照"管理项目"列里面的表名来筛选,应该怎么写代码?
生成后就是
表名
客户编号
合同编号
表名是第一个节点,客户编号是第二个节点,合同编号是第三个节点
老大我知道现成的例子,我的目录树是动态的,要根据动态生成的表名来筛选!
Tables(Nd.Text).Filter ="[客户名称] = '" & Value(1) & "'" 就是表名跟着什么走的问题.
你的表名肯定不是保存在节点名称中吧?
我建议你用一个public全局变量来保存表名,你根据哪个表名生成的目录树,就将哪个表名保存在全局变量中。
这样只需:
Tables(变量名).Filter = .....