以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  子表记录满足父表记录时,父表行如何改变颜色?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=66164)

--  作者:wh420
--  发布时间:2015/3/31 14:25:00
--  子表记录满足父表记录时,父表行如何改变颜色?

 

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

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

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

 

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

 

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

 


--  作者:有点甜
--  发布时间:2015/3/31 14:28:00
--  

 编写父表的drawcell事件。

 

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

 

方法二:建议用方法一


--  作者:wh420
--  发布时间:2015/3/31 14:29:00
--  
代码应该如何写,麻烦老师根据我描述的给个代码段
--  作者:wh420
--  发布时间:2015/3/31 14:30:00
--  
可是由子表的一笔笔订单来决定该笔是否为已付款啊,用父表如何判断?
--  作者:Bin
--  发布时间: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
--  发布时间:2015/3/31 14:31:00
--  
用2楼增加辅助列的方法,效率比较高. 5楼每次都要计算效率较差.
--  作者:wh420
--  发布时间:2015/3/31 14:33:00
--  
用二楼的思路麻烦老师给个代码段参考下
--  作者:有点甜
--  发布时间: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