以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在使用getchild获取集合后,怎么再条件筛选list的内容?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129007)

--  作者:ls93005
--  发布时间:2018/12/19 21:00:00
--  在使用getchild获取集合后,怎么再条件筛选list的内容?
如题,就是如何再筛选集合内的list of datarow ?
--  作者:有点甜
--  发布时间:2018/12/19 22:04:00
--  

无法直接筛选集合的。只能循环每一行判断,如

 

For Each dr As datarow in drs

    If 条件 Then

 

    End If

Next


--  作者:ls93005
--  发布时间:2018/12/19 22:10:00
--  
试过 但出错是为什么
--  作者:有点甜
--  发布时间:2018/12/19 22:16:00
--  
以下是引用ls93005在2018/12/19 22:10:00的发言:
试过 但出错是为什么

 

1、贴出你写的代码;

 

2、报什么错?


--  作者:ls93005
--  发布时间:2018/12/19 22:24:00
--  回复:(有点甜)以下是引用ls93005在2018/12/19 22:1...
 Select Case e.DataCol.name
    Case "C30_原设计_数量","C30_原设计_金额","C30_变更后_数量","C30_变更后_金额","C30_变更值_数量","C30_变更值_金额"
        Dim drs As List(Of DataRow) = e.DataRow.GetChildRows("护栏工程量表")
        Dim dr As DataRow
        For i As Integer = 0 To drs.count - 1
            If drs("原设计或变更") = "原设计" Then
                e.DataRow("C30_原设计_数量") = e.DataRow("C30_原设计_数量") + drs(i)("C30混凝土_方量")
            End If
        Next
End Select


---------------------------
错误
---------------------------
编译错误:重载决策失败,原因是没有可访问的“=”可以用这些参数调用:



错误代码:If drs("原设计或变更") = "原设计" Then
---------------------------
确定  
---------------------------


--  作者:有点甜
--  发布时间:2018/12/19 22:36:00
--  

改成

 

            If drs(i)("原设计或变更") = "原设计" Then


--  作者:ls93005
--  发布时间:2018/12/19 22:37:00
--  
谢谢!

--  作者:ls93005
--  发布时间:2018/12/19 22:39:00
--  回复:(有点甜)改成    &n...
 但是这样的话好像进入一个死循环。程序直接退出,我看不出是哪儿的问题……

--  作者:有点甜
--  发布时间:2018/12/19 22:45:00
--  

 

Select Case e.DataCol.name
    Case "C30_原设计_数量","C30_原设计_金额","C30_变更后_数量","C30_变更后_金额","C30_变更值_数量","C30_变更值_金额"
        Dim drs As List(Of DataRow) = e.DataRow.GetChildRows("护栏工程量表")
        Systemready = False
        e.DataRow("C30_原设计_数量") = 0
        For i As Integer = 0 To drs.count - 1
            If drs(i)("原设计或变更") = "原设计" Then
                e.DataRow("C30_原设计_数量") = e.DataRow("C30_原设计_数量") + drs(i)("C30混凝土_方量")
            End If
        Next
        systemready = True
End Select

 


--  作者:ls93005
--  发布时间:2018/12/19 22:48:00
--  回复:(有点甜) Select Case e.DataCol.name...
 老师,有时间能解释一下吗。我头想破都不懂的。