Foxtable(狐表)用户栏目专家坐堂 → 在使用getchild获取集合后,怎么再条件筛选list的内容?


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

主题:在使用getchild获取集合后,怎么再条件筛选list的内容?

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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
在使用getchild获取集合后,怎么再条件筛选list的内容?  发帖心情 Post By:2018/12/19 21:00:00 [只看该作者]

如题,就是如何再筛选集合内的list of datarow ?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/19 22:04:00 [只看该作者]

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

 

For Each dr As datarow in drs

    If 条件 Then

 

    End If

Next


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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
  发帖心情 Post By:2018/12/19 22:10:00 [只看该作者]

试过 但出错是为什么

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/19 22:16:00 [只看该作者]

以下是引用ls93005在2018/12/19 22:10:00的发言:
试过 但出错是为什么

 

1、贴出你写的代码;

 

2、报什么错?


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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
回复:(有点甜)以下是引用ls93005在2018/12/19 22:1...  发帖心情 Post By:2018/12/19 22:24:00 [只看该作者]

 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
---------------------------
确定  
---------------------------


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/19 22:36:00 [只看该作者]

改成

 

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


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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
  发帖心情 Post By:2018/12/19 22:37:00 [只看该作者]

谢谢!

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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
回复:(有点甜)改成    &n...  发帖心情 Post By:2018/12/19 22:39:00 [只看该作者]

 但是这样的话好像进入一个死循环。程序直接退出,我看不出是哪儿的问题……

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
回复:(有点甜) Select Case e.DataCol.name...  发帖心情 Post By:2018/12/19 22:48:00 [只看该作者]

 老师,有时间能解释一下吗。我头想破都不懂的。

 回到顶部
总数 13 1 2 下一页