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


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

主题:目录树节点代码

帅哥哟,离线,有人找我吗?
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

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/4/23 22:48:00 [只看该作者]

看看生成的条件是什么内容?
msgbox(flt)

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/24 9:08: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
    Tables("订单").Filter = flt
End If
[此贴子已经被作者于2018/4/25 9:41:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/25 9:41:00 [只看该作者]

flt += " And " & Values(i) & "= '" & strs(i)

 

改成

 

flt += " And " & Values(i) & "= '" & strs(i) & "'"


 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/25 17:43:00 [只看该作者]

If flt > "" Then
    DataTables(Vars("表名")).LoadFilter = flt
    DataTables(Vars("表名")).Load
End If


 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/26 11:05:00 [只看该作者]

1、msgbox(flt) 弹出什么?

 

2、报什么错?

 

3、如果自己不会调试,请上传具体foxtable实例测试。


 回到顶部
总数 12 1 2 下一页