以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  目录树生成的列是通过变更传递进来的,如何写单击事件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73049)

--  作者:supwork
--  发布时间:2015/8/11 15:12:00
--  目录树生成的列是通过变更传递进来的,如何写单击事件

vars("TreeViewStr")="窗口名称|窗口标题|数据表名"

 

Dim tb As Table = e.Form.Controls("Table1").Table
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(tb.DataTable.name,vars("TreeViewStr"))
trv.Nodes.Insert("显示全部",0)

 

目录树是通过 vars("TreeViewStr") 变量传递进来生成的

 

单击筛选事件 如何写 代码

下面这样写怎么不行 

 

Dim tb As Table = e.Form.Controls("Table1").Table
Dim Filter As String = ""
Dim Valuea() As String
Dim Value() As String
Value = e.Node.FullPath.Split("\\")
Valuea = vars("TreeViewStr").Split("|")
If e.Node.Text <> "显示所有行" Then
    Select Case e.Node.Level
        Case 0
            Filter = "Valuea(0) = \'" & Value(0) & "\'"
        Case 1
            Filter = "Valuea(0) = \'" & Value(0) & "\' And Valuea(1)  = \'" & Value(1) & "\'"
        Case 2
            Filter = "Valuea(0) = \'" & Value(0) & "\' And Valuea(1)  = \'" & Value(1) & "\' And Valuea(2)  = \'" & Value(2) & "\'"
    End Select
End If
tb.Filter = Filter

[此贴子已经被作者于2015/8/11 15:19:12编辑过]

--  作者:有点蓝
--  发布时间:2015/8/11 15:31:00
--  
用msgbox("位置1")看看运行到那一步了
--  作者:supwork
--  发布时间:2015/8/11 15:36:00
--  

Filter = "窗口名称 = \'" & Value(0) & "\'"  这样写 运行正常

 

Filter = "Valuea(0) = \'" & Value(0) & "\'" ,这样写 就运行不正常。 这时 msgbox(Valuea(0)) 显示为 窗口名称

 

即 如何在列名处,不写列名 而用变量代替

 


--  作者:supwork
--  发布时间:2015/8/11 15:43:00
--  

搞定了

 


--  作者:有点蓝
--  发布时间:2015/8/11 15:44:00
--  
  Filter = "Valuea(0) = \'" & Value(0) & "\' And Valuea(1)  = \'" & Value(1) & "\'"
改为
Filter = Valuea(0) & "=\'" & Value(0) & “‘  And " & Valuea(1) & "=\'" &Value(1) & "\'"   
[此贴子已经被作者于2015/8/11 15:45:21编辑过]

--  作者:大红袍
--  发布时间:2015/8/11 15:50:00
--  

Dim tb As Table = e.Form.Controls("Table1").Table
Dim Vals() As String = e.Node.FullPath.Split("\\")
Dim cols() As String = vars("TreeViewStr").Split("|")
Dim filter As String = "1=1"
If e.Node.Text <> "显示所有行" Then
    For i As Integer = 0 To vals.Length - 1
        filter &= " and " & cols(i) & " = \'" & vals(i) & "\'"
    Next
End If
msgbox(filter)
tb.Filter = Filter

 


--  作者:supwork
--  发布时间:2015/8/11 16:28:00
--  
恩 这样的代码就是看起来舒服