以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]datarow 集合,可以用集合add来加入行吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=94301)

--  作者:yancheng
--  发布时间:2016/12/20 19:40:00
--  [求助]datarow 集合,可以用集合add来加入行吗?
Dim tr As WinForm.TreeView = e.Form.Controls("项目类别")
Dim filter As String
Dim drs As new List (of DataRow)
For Each nd As WinForm.TreeNode In tr.AllNodes
    If nd.Level = 1 And nd.Checked = True Then
        drs.Add(nd.DataRow)
    End If
Next

If drs.Count > 0 Then
    For Each dr As DataRow In drs
        DataTables("施工合同").SQLReplaceFor("非活动",0, "合同编号 = \'" & dr("合同编号") & "\'")
        DataTables("施工合同").SQLReplaceFor("非活动",1, "合同编号 <> \'" & dr("合同编号") & "\'")
    Next
    DataTables("施工合同").LoadFilter = "非活动 = 0"
    DataTables("施工合同").Load
    Tables("主窗口_table1").Filter = "非活动 = 0"
    Tables("主窗口_table1").Sort = "签订日期 desc"
Else
    Return
End If

这种用法对吗?

我这样写,只有最后一个;选中的节点,被筛选出来了。其它的:非活动,全部为:1
[此贴子已经被作者于2016/12/20 19:41:03编辑过]

--  作者:yancheng
--  发布时间:2016/12/20 20:19:00
--  
Dim tr As WinForm.TreeView = e.Form.Controls("项目类别")
Dim filter As String
Dim drs As new List (of DataRow)
Dim drs1 As new List (of DataRow)
For Each nd As WinForm.TreeNode In tr.AllNodes
    If nd.Level = 1
        If nd.Checked = True Then
            drs.Add(nd.DataRow)
        Else
            drs1.Add(nd.DataRow)
        End If
    End If
Next

If drs.Count > 0 Then
    For Each dr As DataRow In drs
        DataTables("施工合同").SQLReplaceFor("非活动",0, "合同编号 = \'" & dr("合同编号") & "\'")
    Next
    For Each dr1 As DataRow In drs1
        DataTables("施工合同").SQLReplaceFor("非活动",1, "合同编号 = \'" & dr1("合同编号") & "\'")
    Next
    DataTables("施工合同").LoadFilter = "非活动 = 0"
    DataTables("施工合同").Load
    Tables("主窗口_table1").Filter = "非活动 = 0"
    Tables("主窗口_table1").Sort = "签订日期 desc"
Else
    Return
End If

我改成这样,就可以了。

不知道,有没有更简单的代码。

请老师指教一下。很想用其它的方法实现。

--  作者:有点蓝
--  发布时间:2016/12/20 21:12:00
--  
Dim tr As WinForm.TreeView = e.Form.Controls("项目类别")
Dim filter As String
Dim drs As new List (of String)
For Each nd As WinForm.TreeNode In tr.AllNodes
    If nd.Level = 1 
        If nd.Checked = True Then
            drs.Add(nd.DataRow("合同编号"))
        End If
    End If
Next

If drs.Count > 0 Then
    filter =  "合同编号 in (\'" & String.Join("\',\'",drs.ToArray()) & "\')"
    DataTables("施工合同").LoadFilter = filter
    DataTables("施工合同").Load
    Tables("主窗口_table1").Filter = filter
    Tables("主窗口_table1").Sort = "签订日期 desc"
Else
    Return
End If