Foxtable(狐表)用户栏目专家坐堂 → 目录树节点代码


  共有2266人关注过本帖树形打印复制链接

主题:目录树节点代码

帅哥哟,离线,有人找我吗?
yifan3429
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
目录树节点代码  发帖心情 Post By:2018/4/23 22:28:00 [显示全部帖子]

Dim Filter As String
If e.node.Text = "加载所有数据" Then
    Filter = ""
Else
    Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
    Select Case e.Node.Level
        Case 0
            Filter ="[产品] = '" & dr("产品") & "'"
        Case 1
            Filter ="[产品] = '" & dr("产品") & "' And [客户] = '" & dr("客户") & "'"
    End Select
End If
DataTables("订单").LoadFilter = Filter
DataTables("订单").Load()

上面的是原始代码  
目录树的节点会根据 CheckedComboBox选择列 内容重新生成,
下面的代码貌似有些问题报错数据不存在



Dim Values() As String = e.Form.Controls("CheckedComboBox选择列").Text.Split(",")

Dim strs() As String = e.Node.FullName.Split("\")
Dim dr As DataRow = e.Node.DataRow
Dim flt As String
For i As Integer = 0 To strs.Length - 1 ''间接获取目录树层级(Level)
    For j As Integer = 0 To Values.Length - 1
        If i = j Then ''只加入选定节点及以上的节点
            flt + = Values(j) & "= '" & dr(Values(j)) & "' And "
        End If
    Next
Next
If flt > "" Then
    Tables(Vars("表名")).Filter = flt.SubString(0,flt.Length - 5)
End If

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2018/4/24 0:07:00 [显示全部帖子]

Dim Filter As String
If e.node.Text = "加载所有数据" Then
    Filter = ""
Else
    Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
    Select Case e.Node.Level
        Case 0
            Filter ="[产品] = '" & dr("产品") & "'"
        Case 1
            Filter ="[产品] = '" & dr("产品") & "' And [客户] = '" & dr("客户") & "'"
    End Select
End If
DataTables("订单").LoadFilter = Filter
DataTables("订单").Load()

我要的结果是和上面一样 
但是需要根据 CheckedComboBox选择列 的内容来加载数据
那么就需要动态的来加载数据,不能设计成上面的固定模式。
下面的代码需要优化不会了


Dim Values() As String = e.Form.Controls("CheckedComboBox选择列").Text.Split(",")
Dim strs() As String = e.Node.FullName.Split("\")
Dim dr As DataRow = e.Node.DataRow
Dim flt As String
For i As Integer = 0 To strs.Length - 1 ''间接获取目录树层级(Level)
    For j As Integer = 0 To Values.Length - 1
        If i = j Then ''只加入选定节点及以上的节点
            flt + = Values(j) & "= '" & dr(Values(j)) & "' And "
        End If
    Next
Next
If flt > "" Then
    DataTables(订单).Filter = flt.SubString(0,flt.Length - 5)
End If

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2018/4/25 9:06:00 [显示全部帖子]

d
图片点击可在新窗口打开查看此主题相关图片如下:截图20180425151357.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/4/25 9:05:55编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2018/4/25 17:17:00 [显示全部帖子]


需要增加点击 加载所有数据 
加载全部

我是初识不加载  
单击节点加载数据
貌似不行

Dim Values() As String = e.Form.Controls("CheckedComboBox选择列").Text.Split(",")
Dim strs() As String = e.Node.FullName.Split("\")
Dim flt As String = "1=1"
For i As Integer = 0 To strs.Length - 1 ''间接获取目录树层级(Level)
    flt += " And " & Values(i) & "= '" & strs(i) & "'"
Next
If flt > "" Then
    DataTables(Vars("表名")).LoadFilter = flt

End If


[此贴子已经被作者于2018/4/25 17:22:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2018/4/26 9:17:00 [显示全部帖子]

加载所有数据失败

Dim Filter As String
If e.node.Text = "加载所有数据" Then
    DataTables(Vars("表名")).Load
Else
    Dim Values() As String = e.Form.Controls("CheckedComboBox选择列").Text.Split(",")
    Dim strs() As String = e.Node.FullName.Split("\")
    Dim flt As String = "1=1"
    For i As Integer = 0 To strs.Length - 1 ''间接获取目录树层级(Level)
        flt += " And " & Values(i) & "= '" & strs(i) & "'"
    Next
    If flt > "" Then
        DataTables(Vars("表名")).LoadFilter = flt
        DataTables(Vars("表名")).Load
    End If
End If

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2018/4/26 16:11:00 [显示全部帖子]

主要是我点击加载全部数据的节点 不会加载全部数据。

 回到顶部