Foxtable(狐表)用户栏目专家坐堂 → [求助]


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

主题:[求助]

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


加好友 发短信
等级:幼狐 帖子:151 积分:1110 威望:0 精华:0 注册:2015/1/24 15:26:00
[求助]  发帖心情 Post By:2015/1/28 11:14:00 [显示全部帖子]

 

上次目录树输入合同类别时,目录树是由多列表生成的,这次费用类别目录树是由级码表生成的,级码表如下:

级码    类别名称

1                  合同费用

1.1              工程费用

1.1.1                  总包费用

1.1.1.1              总包土建费用

1.1.1.2              总包安装费用

1.1.1.3              总包其它费用

1.1.2                  分包费用

1.1.2.1              分包土建费用

1.1.2.1.1           初步勘察

1.1.2.1.2           详细勘察

1.1.2.1.3           土建临设

级码表设置的目录树无法按列获取输入值,因此考虑用FullPath获取路径标签,转化为输入值,代码如下,

在下拉菜单输入时,点击第0,1,2,3层目录时,弹出路径错误,索引超出数组范围的提示。

点击第4层目录时,弹出“未找到列”的错误提示,

请教修改:图片点击可在新窗口打开查看

Dim Vals() As String = e.Node.FullPath.Split("\")

Dim Filter As String = "[费用类型] = '" & Vals(0) & "' And [一级费用类别] = '" & Vals(1) & "' And [二级费用类别] = '" & Vals(2) & "' And [三级费用类别] = '" & Vals(3) & "'And [四级费用类别] = '" & Vals(4) & "'"

Dim dr As DataRow = DataTables("费用类别").Find(Filter)

Dim r As Row = Tables("费用支付台账").Current

If e.Node.Level = 0 Then

    Return

Else If e.Node.Level = 1 Then

    Return

Else If e.Node.Level = 2 Then

    r("费用类型") = dr("费用类型")

    r("一级费用类别") = dr("一级费用类别")

    r("二级费用类别") = dr("二级费用类别")

    e.Form.DropDownBox.Value = dr("费用类型")

Else If e.Node.Level = 3 Then

    r("费用类型") = dr("费用类型")

    r("一级费用类别") = dr("一级费用类别")

    r("二级费用类别") = dr("二级费用类别")

    r("三级费用类别") = dr("三级费用类别")

    e.Form.DropDownBox.Value = dr("费用类型")

Else If e.Node.Level = 4 Then

    r("费用类型") = dr("费用类型")

    r("一级费用类别") = dr("一级费用类别")

    r("二级费用类别") = dr("二级费用类别")

    r("三级费用类别") = dr("三级费用类别")

    r("四级费用类别") = dr("四级费用类别")

    e.Form.DropDownBox.Value = dr("费用类型")

End If

e.form.DropDownBox.CloseDropdown

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


加好友 发短信
等级:幼狐 帖子:151 积分:1110 威望:0 精华:0 注册:2015/1/24 15:26:00
  发帖心情 Post By:2015/1/28 14:58:00 [显示全部帖子]

谢谢,我将代码改变如下:

Dim Vals() As String = e.Node.FullPath.Split("\")
Dim Filter As String
Select Case e.Node.Level
    Case 0
        Return
    Case 1
        Return
    Case 2
        filter = "[费用类型] = '" & Vals(0) & "' And [一级费用类别] = '" & Vals(1) & "'And [二级费用类别] = '" & Vals(2) & "'"
        Dim dr As DataRow = DataTables("费用类别").Find(Filter)
        Dim r As Row = Tables("费用支付台账").Current
        r("费用类型") = dr("费用类型")
        r("一级费用类别") = dr("一级费用类别")
        r("二级费用类别") = dr("二级费用类别")
        e.Form.DropDownBox.Value = dr("费用类型")
    Case 3
       ............

End Select
e.form.DropDownBox.CloseDropdown

 

但还是报错,提示:未找到列〔费用类型〕

Dim Vals() As String = e.Node.FullPath.Split("\")

Dim Filter As String

Dim dr As DataRow = DataTables("费用类别").Find(Filter)
这段代码的结果是不是:dr() = 合同费用\工程\分包\景观工程,其值满足Filter,对应的数据结构是:〔费用类型〕\〔一级费用类别〕\〔二级费用类别〕

我不知道用什么方式来返回这个结果,查看是否正确,请指教。



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


加好友 发短信
等级:幼狐 帖子:151 积分:1110 威望:0 精华:0 注册:2015/1/24 15:26:00
  发帖心情 Post By:2015/1/28 15:38:00 [显示全部帖子]

谢谢,我确实基本知识不具备,太麻烦老师了。

其实:

Dim Vals() As String = e.Node.FullPath.Split("\")

Vals() 的结果就直接是:合同费用\工程\分包\景观工程,其值是按点击的位置和层级筛选,对应的数据结构是:Vals(0)\Vals(1)\Vals(2)

所以可以直接赋值了。


 回到顶部