Foxtable(狐表)用户栏目专家坐堂 → 子表记录满足父表记录时,父表行如何改变颜色?


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

主题:子表记录满足父表记录时,父表行如何改变颜色?

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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10562 威望:0 精华:0 注册:2014/2/19 16:32:00
子表记录满足父表记录时,父表行如何改变颜色?  发帖心情 Post By:2015/3/31 14:25:00 [只看该作者]

 

1、有Treeview目录树,节点根据子表的日期自动生成

2、父表与子表用ID关联,父表为客户信息,子表为该客户订单信息

3、子表有一个逻辑列(是否付款)

 

当双击目录树的某月份时,子表显示所属月份订单,父表显示该月份有定单的客户名称。

 

要求:子表在该月份范围内且都为已付款的记录,这时把父表所对应的行设置成字体为红色的样式。

 


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


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

 编写父表的drawcell事件。

 

方法一:在父表加入一列是否已付,判断是否设置样式;

 

方法二:建议用方法一


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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10562 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2015/3/31 14:29:00 [只看该作者]

代码应该如何写,麻烦老师根据我描述的给个代码段

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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10562 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2015/3/31 14:30:00 [只看该作者]

可是由子表的一笔笔订单来决定该笔是否为已付款啊,用父表如何判断?

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/3/31 14:30:00 [只看该作者]

在DrawCell事件利用 Compute 和子表行数对比,然后设置样式


if e.row.DataRow.GetChildRows("子表名").count = e.table.DataTable.Compute("count(是否付款)","是否付款=True 关联ID='" & e.Row("关联ID") & "'")  then
  e.style="样式1"
end if

搞不定就上例子

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/3/31 14:31:00 [只看该作者]

用2楼增加辅助列的方法,效率比较高. 5楼每次都要计算效率较差.

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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10562 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2015/3/31 14:33:00 [只看该作者]

用二楼的思路麻烦老师给个代码段参考下

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


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

子表Datacolchanged事件

 

If e.DataCol.name = "已付款" Then
    Dim count1 As Integer = e.DataTable.Compute("count(是否付款)","是否付款=True and 关联ID='" & e.DataRow("关联ID") & "'")
    Dim count2 As Integer = e.DataTable.Compute("count(是否付款)","关联ID='" & e.DataRow("关联ID") & "'")
    If count1 = count2 Then
        e.DataRow.getParentRow("父表")("已付款") = True
    Else
        e.DataRow.getParentRow("父表")("已付款") = False       
    End If
End If


 回到顶部