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


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

主题:目录树

美女呀,离线,留言给我吧!
采菊东篱下
  51楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/3 10:39:00 [只看该作者]

可以了
ElseIf Vals(0) = DataTables("分类").DataRows(1)("分类") Then
    Dim dr1 As DataRow = DataTables("车辆基本信息").Find("分类 = '" & Vals(0) & "' And 车牌号码 ='" & Vals(1) & "'")
    If dr1 IsNot Nothing Then
        If e.Node.Level = 0 Then '如果是顶层节点
            Return '则返回
        End If
        tr("分类") = dr1("分类")
        tr("车牌号码") = dr1("车牌号码")
        e.Form.DropDownBox.Value = tr("车牌号码")
        e.Form.DropDownBox.CloseDropdown()
    End If
End If

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  52楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/3 10:43:00 [只看该作者]

完整的代码:
Dim Vals() As String = e.Node.FullPath.Split("\")
Dim tr As Row = Tables("缴费情况").Current
If Vals(0) = DataTables("分类").DataRows(0)("分类") Then
    Dim drs As List(Of DataRow) = DataTables("车辆基本信息").Select("分类 = '" & Vals(0) & "' And 住址_巷 ='" & Vals(1) & "' And 住址_号 ='" & Vals(2) & "'And 住址_房 ='" & Vals(3) & "'")
    For Each dr As DataRow In drs
        If dr IsNot Nothing Then
            If e.Node.Level = 0 Or e.Node.Level = 1 Or e.Node.Level = 2 Or e.Node.Level = 3 Then '如果是顶层节点
                Return '则返回
            End If
            tr("分类") = dr("分类")
            tr("住址_巷") = dr("住址_巷")
            tr("住址_号") = dr("住址_号")
            tr("住址_房") = dr("住址_房")
            tr("姓名") = dr("姓名")
            tr("车牌号码") = dr("车牌号码")
            tr("固定电话") = dr("固定电话")
            tr("手机号码") = dr("手机号码")
            tr("备注") = dr("备注")
            e.Form.DropDownBox.Value = tr("车牌号码")
            e.Form.DropDownBox.CloseDropdown()
        End If
    Next
ElseIf Vals(0) = DataTables("分类").DataRows(1)("分类") Then
    Dim dr1 As DataRow = DataTables("车辆基本信息").Find("分类 = '" & Vals(0) & "' And 车牌号码 ='" & Vals(1) & "'")
    If dr1 IsNot Nothing Then
        If e.Node.Level = 0 Then '如果是顶层节点
            Return '则返回
        End If
        tr("分类") = dr1("分类")
        tr("车牌号码") = dr1("车牌号码")
        e.Form.DropDownBox.Value = tr("车牌号码")
        e.Form.DropDownBox.CloseDropdown()
    End If
End If
点要符合条件的最后一层是可以录入数据的,但点
            If e.Node.Level = 0 Or e.Node.Level = 1 Or e.Node.Level = 2 Or e.Node.Level = 3 Then '如果是顶层节点
                Return '则返回
            End If
这条件之间的层报错!

图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2021/3/3 11:05:20编辑过]

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/3 10:50:00 [只看该作者]

Dim Vals() As String = e.Node.FullPath.Split("\")
Dim tr As Row = Tables("缴费情况").Current
If Vals(0) = DataTables("分类").DataRows(0)("分类") Then
            If e.Node.Level = 0 Or e.Node.Level = 1 Or e.Node.Level = 2 Or e.Node.Level = 3 Then '如果是顶层节点
                Return '则返回
            End If
    Dim drs As List(Of DataRow) = DataTables("车辆基本信息").Select("分类 = '" & Vals(0) & "' And 住址_巷 ='" & Vals(1) & "' And 住址_号 ='" & Vals(2) & "'And 住址_房 ='" & Vals(3) & "'")
    For Each dr As DataRow In drs
        If dr IsNot Nothing Then
            tr("分类") = dr("分类")

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  54楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/3 16:07:00 [只看该作者]

改这在窗口和表上都能录入:
Dim Vals() As String = e.Node.FullPath.Split("\")
Dim tr As Row
If e.Form.DropTable IsNot Nothing Then '如果下拉窗口是从表中打开
    tr = e.Form.DropTable.Current '获取此表的当前行
Else '如果下拉窗口是通过DropdownBox打开
    Dim nm As String = e.Form.DropDownBox.BindingField '获取绑定的字段
    nm = nm.Split(".")(0) '获取绑定的表名
    tr = Tables(nm).Current '获取此表的当前行
End If
If Vals(0) = DataTables("分类").DataRows(0)("分类") Then
    If e.Node.Level = 0 Or e.Node.Level = 1 Or e.Node.Level = 2 Or e.Node.Level = 3 Then '如果是顶层节点
        Return '则返回
    End If
    Dim drs As List(Of DataRow) = DataTables("车辆基本信息").Select("分类 = '" & Vals(0) & "' And 住址_巷 ='" & Vals(1) & "' And 住址_号 ='" & Vals(2) & "'And 住址_房 ='" & Vals(3) & "'")
    For Each dr As DataRow In drs
        If dr IsNot Nothing Then
            tr("分类") = dr("分类")
            tr("住址_巷") = dr("住址_巷")
            tr("住址_号") = dr("住址_号")
            tr("住址_房") = dr("住址_房")
            tr("姓名") = dr("姓名")
            tr("车牌号码") = dr("车牌号码")
            tr("固定电话") = dr("固定电话")
            tr("手机号码") = dr("手机号码")
            tr("备注") = dr("备注")
            e.Form.DropDownBox.Value = tr("车牌号码")
            e.Form.DropDownBox.CloseDropdown()
        End If
    Next
ElseIf Vals(0) = DataTables("分类").DataRows(1)("分类") Then
    If e.Node.Level = 0 Then '如果是顶层节点
        Return '则返回
    End If
    Dim dr1 As DataRow = DataTables("车辆基本信息").Find("分类 = '" & Vals(0) & "' And 车牌号码 ='" & Vals(1) & "'")
    If dr1 IsNot Nothing Then
        tr("分类") = dr1("分类")
        tr("亲属临时停车") = dr1("亲属临时停车")
        tr("车牌号码") = dr1("车牌号码")
        e.Form.DropDownBox.Value = tr("车牌号码")
        e.Form.DropDownBox.CloseDropdown()
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/3 16:11:00 [只看该作者]

有什么问题?

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  56楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/3 20:07:00 [只看该作者]

我想做一个在缴费情况表、月租收费窗口、临时收费录入窗口都能通用的目录树,但在月租收费窗口只显示月租收费的所有字节,临时收费录入窗口只显示临时收费的所有字节,否则显示所有字节,我这样写红色标注报错。
窗口的AfterLoad事件改为:
Dim cmd As New SQLCommand
Dim dt As DataTable
'cmd.C '内部数据源,这行代码不需要
cmd.CommandText = "SELECT [_Identify],分类,住址_序号,住址_巷,住址_号,住址_房,姓名,Year(日期) As 年, Month(日期) As 月,手机号码,车牌号码,备注 Fro m {车辆基本信息}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
If CurrentTable.Name = Tables("月租收费_Table1") Then
    trv.BuildTree(dt,"住址_巷|住址_号|住址_房|姓名|手机号码|车牌号码","[分类] = '" & DataTables("分类").DataRows(0)("分类") & "'","住址_序号,住址_号,住址_房")
ElseIf CurrentTable.Name = Tables("临时收费录入_Table1") Then
    trv.BuildTree(dt,"车牌号码","[分类] = '" & DataTables("分类").DataRows(1)("分类") & "'","车牌号码")
Else
    trv.BuildTree(dt,"住址_巷|住址_号|住址_房|姓名|手机号码|车牌号码","[分类] = '" & DataTables("分类").DataRows(0)("分类") & "'","住址_序号,住址_号,住址_房")
    trv.Nodes.Insert(DataTables("分类").DataRows(0)("分类"),0)
    Do While trv.Nodes.Count > 1
        trv.Nodes(1).MoveRight
    Loop
    Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
    'trv2.BuildTree(dt,"年|月|车牌号码","[分类] = '" & DataTables("分类").DataRows(1)("分类") & "'","年 DESC,月 DESC")
    trv2.BuildTree(dt,"车牌号码","[分类] = '" & DataTables("分类").DataRows(1)("分类") & "'","车牌号码")
    Dim node As WinForm.TreeNode = trv.Nodes.Add(DataTables("分类").DataRows(1)("分类"))
    For i As Integer = trv2.Nodes.Count - 1 To 0 Step -1
        Dim nn As WinForm.TreeNode = trv2.Nodes(i)
        trv2.Nodes.RemoveAt(i)
        node.basenode.Nodes.Add(nn.basenode)
    Next
End If



目录树的NodeMouseClick事件改为:
Dim Vals() As String = e.Node.FullPath.Split("\")
Dim tr As Row
If e.Form.DropTable IsNot Nothing Then '如果下拉窗口是从表中打开
    tr = e.Form.DropTable.Current '获取此表的当前行
Else '如果下拉窗口是通过DropdownBox打开
    Dim nm As String = e.Form.DropDownBox.BindingField '获取绑定的字段
    nm = nm.Split(".")(0) '获取绑定的表名
    tr = Tables(nm).Current '获取此表的当前行
End If
If CurrentTable.Name = Tables("月租收费_Table1") Then
    If e.Node.Level = 0 Or e.Node.Level = 1 Or e.Node.Level = 2 Or e.Node.Level = 3 Then '如果是顶层节点
        Return '则返回
    End If
    Dim drs As List(Of DataRow) = DataTables("车辆基本信息").Select("分类 = '" & Vals(0) & "' And 住址_巷 ='" & Vals(1) & "' And 住址_号 ='" & Vals(2) & "'And 住址_房 ='" & Vals(3) & "'")
    For Each dr As DataRow In drs
        If dr IsNot Nothing Then
            tr("分类") = dr("分类")
            tr("住址_巷") = dr("住址_巷")
            tr("住址_号") = dr("住址_号")
            tr("住址_房") = dr("住址_房")
            tr("姓名") = dr("姓名")
            tr("车牌号码") = dr("车牌号码")
            tr("固定电话") = dr("固定电话")
            tr("手机号码") = dr("手机号码")
            tr("备注") = dr("备注")
            e.Form.DropDownBox.Value = tr("车牌号码")
            e.Form.DropDownBox.CloseDropdown()
        End If
    Next
ElseIf CurrentTable.Name = Tables("临时收费录入_Table1") Then
    If e.Node.Level = 0 Then '如果是顶层节点
        Return '则返回
    End If
    Dim dr1 As DataRow = DataTables("车辆基本信息").Find("分类 = '" & Vals(0) & "' And 车牌号码 ='" & Vals(1) & "'")
    If dr1 IsNot Nothing Then
        tr("分类") = dr1("分类")
        tr("亲属临时停车") = dr1("亲属临时停车")
        tr("车牌号码") = dr1("车牌号码")
        e.Form.DropDownBox.Value = tr("车牌号码")
        e.Form.DropDownBox.CloseDropdown()
    End If
Else
    If Vals(0) = DataTables("分类").DataRows(0)("分类") Then
        If e.Node.Level = 0 Or e.Node.Level = 1 Or e.Node.Level = 2 Or e.Node.Level = 3 Then '如果是顶层节点
            Return '则返回
        End If
        Dim drs As List(Of DataRow) = DataTables("车辆基本信息").Select("分类 = '" & Vals(0) & "' And 住址_巷 ='" & Vals(1) & "' And 住址_号 ='" & Vals(2) & "'And 住址_房 ='" & Vals(3) & "'")
        For Each dr As DataRow In drs
            If dr IsNot Nothing Then
                tr("分类") = dr("分类")
                tr("住址_巷") = dr("住址_巷")
                tr("住址_号") = dr("住址_号")
                tr("住址_房") = dr("住址_房")
                tr("姓名") = dr("姓名")
                tr("车牌号码") = dr("车牌号码")
                tr("固定电话") = dr("固定电话")
                tr("手机号码") = dr("手机号码")
                tr("备注") = dr("备注")
                e.Form.DropDownBox.Value = tr("车牌号码")
                e.Form.DropDownBox.CloseDropdown()
            End If
        Next
    ElseIf Vals(0) = DataTables("分类").DataRows(1)("分类") Then
        If e.Node.Level = 0 Then '如果是顶层节点
            Return '则返回
        End If
        Dim dr1 As DataRow = DataTables("车辆基本信息").Find("分类 = '" & Vals(0) & "' And 车牌号码 ='" & Vals(1) & "'")
        If dr1 IsNot Nothing Then
            tr("分类") = dr1("分类")
            tr("亲属临时停车") = dr1("亲属临时停车")
            tr("车牌号码") = dr1("车牌号码")
            e.Form.DropDownBox.Value = tr("车牌号码")
            e.Form.DropDownBox.CloseDropdown()
        End If
    End If
End If
[此贴子已经被作者于2021/3/3 20:26:07编辑过]

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/4 8:53:00 [只看该作者]

放到DropDownOpening事件

if e.Form.DropDownBox.DropTable isnot nothing then
select case e.Form.DropDownBox.DropTable .Name
case “月租收费_Table1
月租收费_Table1的代码
case "临时收费录入_Table1"
临时收费录入_Table1的代码
end select
else
select case e.Form.DropDownBox.Form.Name
case “窗口1”
窗口1的代码
case “窗口2”
窗口2的代码
end select
end if

这种生成的目录树,和赋值结果都基本没有共性的用法建议还是分开不同的下拉窗口做,除了控制麻烦,效率低下,几乎没有什么好处

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  58楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/4 9:57:00 [只看该作者]

  不是这个意思,目录树的数据源全来源于车辆基本信息生成的表,在缴费情况表中打开显示所有字节,在月租收费窗口中打开只显示月租收费的所有字节,临时收费录入窗口中打开只显示临时收费的所有字节,它们完全可共用同一个窗口,因为都来源于同一数据源,只是字节显示条件不同,不设显示条件直接使用也可,但为方便选择,就设在不同表下显示不同字节,原则上可控吧?
[此贴子已经被作者于2021/3/4 9:59:05编辑过]

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/4 10:04:00 [只看该作者]

您喜欢就好

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  60楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/4 10:30:00 [只看该作者]

以下是引用有点蓝在2021/3/4 8:53:00的发言:
放到DropDownOpening事件

if e.Form.DropDownBox.DropTable isnot nothing then
select case e.Form.DropDownBox.DropTable .Name
case “月租收费_Table1
月租收费_Table1的代码
case "临时收费录入_Table1"
临时收费录入_Table1的代码
end select
else
select case e.Form.DropDownBox.Form.Name
case “窗口1”
窗口1的代码
case “窗口2”
窗口2的代码
end select
end if

这种生成的目录树,和赋值结果都基本没有共性的用法建议还是分开不同的下拉窗口做,除了控制麻烦,效率低下,几乎没有什么好处






总感觉这判断不对,我要判断在哪个表打开下拉目录树,缴费情况表或是月租收费窗口、临时收费录入窗口,不是下拉窗口打开的表来源于表或窗口。


 回到顶部
总数 107 上一页 1 2 3 4 5 6 7 8 9 10 下一页 ..11