以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多组重复数据,怎样让不同组的相同数据显示不同的颜色  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=80405)

--  作者:lublin_blk
--  发布时间:2016/1/22 10:21:00
--  多组重复数据,怎样让不同组的相同数据显示不同的颜色
foxtable里有多组重复数据,怎样让不同组的相同数据显示不同的颜色。像excel的话,如果用条件格式的“重复”选项,所有的重复数据都是一个颜色了,想让他们显示不同的颜色。比如这些数据里两个3,四个8,让两个3一个颜色,四个8一个颜色。有方法吗?
--  作者:大红袍
--  发布时间:2016/1/22 10:22:00
--  

参考

 

http://www.foxtable.com/help/topics/0656.htm

 

具体问题,做例子上传上来测试。


--  作者:lublin_blk
--  发布时间:2016/1/22 10:58:00
--  

例子和在达到的效果如下

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:重复数据组例子.table


图片点击可在新窗口打开查看此主题相关图片如下:多组重复数据要达效果.png
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/1/22 11:27:00
--  

参考代码

 

static ls As new List(Of String)
If e.Col.name = "产品编码" Then
    Dim count As Integer = e.Table.DataTable.compute("count(产品编码)", "产品编码 = \'" & e.Row("产品编码") & "\'")
    If count > 1 Then
        Dim name As String = e.Row("产品编码")
        If ls.Contains(name) = False Then
            Dim r As Integer = Rand.Next(0, 255)
            Dim g As Integer = Rand.Next(0, 255)
            Dim b As Integer = Rand.Next(0, 255)
            Dim c As Color = Color.FromARGB(255, r, g, b)

            e.Table.DataTable.AddUserStyle(name, c, Color.black)
            ls.add(name)
        End If
        e.style = name
    End If
End If


--  作者:lublin_blk
--  发布时间:2016/1/22 11:46:00
--  
重复数据组颜色可不可以拓展至整行呢?另外,对单独没有重复值的行,交替色又如何能体现?
图片点击可在新窗口打开查看此主题相关图片如下:多组重复数据要达效果2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:多组重复数据要达效果3.png
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/1/22 11:52:00
--  

static ls As new List(Of String)
    Dim count As Integer = e.Table.DataTable.compute("count(产品编码)", "产品编码 = \'" & e.Row("产品编码") & "\'")
    If count > 1 Then
        Dim name As String = e.Row("产品编码")
        If ls.Contains(name) = False Then
            Dim r As Integer = Rand.Next(0, 255)
            Dim g As Integer = Rand.Next(0, 255)
            Dim b As Integer = Rand.Next(0, 255)
            Dim c As Color = Color.FromARGB(255, r, g, b)

            e.Table.DataTable.AddUserStyle(name, c, Color.black)
            ls.add(name)
        End If
        e.style = name
End If


--  作者:lublin_blk
--  发布时间:2016/1/22 12:10:00
--  
颜色太多了乱,如果只想让他显示2种交替色怎么样呢?
--  作者:lublin_blk
--  发布时间:2016/1/22 12:16:00
--  
还有一个问题请教,如果同一列,只允许有3种状态,A,B,C态,如果把不同态用不同的颜色标记出来,如图
图片点击可在新窗口打开查看此主题相关图片如下:同一列不同状态颜色标签.png
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/1/22 12:23:00
--  
回复8楼看2楼啊。
--  作者:大红袍
--  发布时间:2016/1/22 12:28:00
--  
static ls As new List(Of String)
static i As Integer = 0
Dim count As Integer = e.Table.DataTable.compute("count(产品编码)", "产品编码 = \'" & e.Row("产品编码") & "\'")
If count > 1 Then
    Dim name As String = e.Row("产品编码")
    If ls.Contains(name) = False Then
        If i = 0
            e.Table.DataTable.AddUserStyle(name, Color.Red, Color.black)
            i += 1
        ElseIf i = 1 Then
            e.Table.DataTable.AddUserStyle(name, Color.Yellow, Color.black)
            i = 0
        End If
        ls.add(name)
    End If
    e.style = name
End If