以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  新增行默认筛选树列,如何做?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107805)

--  作者:chengjingliang
--  发布时间:2017/10/10 15:32:00
--  新增行默认筛选树列,如何做?
筛选后发现没有需要的行,新增行默认筛选树列,如何设置?或编写代码?
--  作者:有点甜
--  发布时间:2017/10/10 15:56:00
--  

 上传具体实例说明。


--  作者:chengjingliang
--  发布时间:2017/10/10 16:43:00
--  
  • 工料单价表内,筛选树:商丘市虞城县产业聚集区——材料——基本材料,工料单价表:新增行,项目ID是空白,希望默认项目ID与筛选树所在的项目ID相同


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


 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成本测算170811-3.rar


--  作者:有点甜
--  发布时间:2017/10/10 17:05:00
--  

DataRowAdded事件

 

For Each a As OBJECT In Tables("工料单价").grid.Parent.controls
    For Each b As OBJECT In a.controls
        If B.text = "筛选树" Then
            Dim tr = b.controls(0).controls(0)
            If tr.selectednode IsNot Nothing AndAlso tr.selectednode.text <> "显示所有行" Then
                Dim ary1() As String = "项目名称|工料一类|工料二类|工料名称".split("|")
                Dim ary2() As String = tr.selectednode.fullpath.split("\\")
                For i As Integer = 0 To ary2.length-1
                    If e.DataTable.DataCols(ary1(i)).Expression = "" Then
                        e.DataRow(ary1(i)) = ary2(i)
                    End If
                Next
                Dim fdr As DataRow = DataTables("工程项目").find("项目名称 = \'" & ary2(0) & "\'")
                If fdr IsNot Nothing
                    e.DataRow("项目id") = fdr("项目id")
                End If
            End If
        End If
    Next
Next


--  作者:chengjingliang
--  发布时间:2017/10/10 18:21:00
--  
我修改了一下,想在清单表内实现筛选树下新增行,不能默认筛选树的项目ID,问题出在哪了?

For Each a As OBJECT In Tables("清单").grid.Parent.controls
    For Each b As OBJECT In a.controls
        If B.text = "筛选树" Then

            Dim tr = b.controls(0).controls(0)
            If tr.selectednode IsNot Nothing AndAlso tr.selectednode.text <> "显示所有行" Then

                Dim ary1() As String = "项目名称|单位工程|清单名称".split("|")
                Dim ary2() As String = tr.selectednode.fullpath.split("\\")

                For i As Integer = 0 To ary2.length-1
                    If e.DataTable.DataCols(ary1(i)).Expression = "" Then
                        e.DataRow(ary1(i)) = ary2(i)
                    End If
                Next
                Dim fdr As DataRow = DataTables("工程项目").find("项目名称=\'" & ary2(0) & "\'")

                If fdr IsNot Nothing
                    e.DataRow("项目id") = fdr("项目id")

                End If
            End If
        End If
    Next
Next


--  作者:有点甜
--  发布时间:2017/10/10 18:45:00
--  
写到DataRowAdding事件。