以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请教drawcell事件的写法 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=97088) |
-- 作者:zhangchi96 -- 发布时间:2017/3/6 8:42:00 -- 请教drawcell事件的写法 写了一段drawcell事件的代码,不但写法错了,而且执行后的结果和想象中的不同,因为初写,敬请老师修改! DataTables("网络职工信息修改").AddUserStyle("a", Color.Red, Color.White) DataTables("网络职工信息修改").AddUserStyle("黄洋红", Color.Yellow, Color.Magenta ) DataTables("网络职工信息修改").AddUserStyle("淡青蓝", Color.LightCyan, Color.Navy ) DataTables("网络职工信息修改").AddUserStyle("金黄蓝", Color.Gold, Color.Navy ) DataTables("网络职工信息修改").AddUserStyle("浅黄蓝", Color.LightYellow, Color.Navy ) DataTables("网络职工信息修改").AddUserStyle("草绿蓝", Color.GreenYellow, Color.DarkBlue ) DataTables("网络职工信息修改").AddUserStyle("灰蓝", Color.Gainsboro, Color.Blue) Dim r1, r2 As DataRow r1 = DataTables("网络职工信息修改").find(" 排序 = 1 ") r2 = DataTables("网络职工信息修改").find(" 排序 = 2 ") If e.Row("排序") = 1 Then e.style = "淡青蓝" ElseIf e.Row("排序") = 2 Then For Each dc As DataCol In DataTables("网络职工信息修改").DataCols If r2(dc.name) <> r1(dc.name) Then If r2("业务状态") = "等待提交" Then e.style = "a" ElseIf e.Row("业务状态") = "已经提交" Then e.style = "金黄蓝" ElseIf e.Row("业务状态") = "审核通过" Then e.style = "草绿蓝" End If End If Next End If
|
-- 作者:有点蓝 -- 发布时间:2017/3/6 9:16:00 -- 截图说明正确的结果和错误的结果分别是怎么样的?
下面的代码放到AfterOpenProject事件
DataTables("网络职工信息修改").AddUserStyle("a", Color.Red, Color.White)
DataTables("网络职工信息修改").AddUserStyle("黄洋红", Color.Yellow, Color.Magenta )
DataTables("网络职工信息修改").AddUserStyle("淡青蓝", Color.LightCyan, Color.Navy )
DataTables("网络职工信息修改").AddUserStyle("金黄蓝", Color.Gold, Color.Navy )
DataTables("网络职工信息修改").AddUserStyle("浅黄蓝", Color.LightYellow, Color.Navy )
DataTables("网络职工信息修改").AddUserStyle("草绿蓝", Color.GreenYellow, Color.DarkBlue )
DataTables("网络职工信息修改").AddUserStyle("灰蓝", Color.Gainsboro, Color.Blue)
|
-- 作者:有点色 -- 发布时间:2017/3/6 9:53:00 -- 你没有理解 drawcell 事件,此事件,是不断执行的,每次执行的时候,触发的是某一个单元格。
你要对单元格 e.row e.col 进行判断来写代码,也就是控制每一个单元格,而不是总体设置。 |
-- 作者:zhangchi96 -- 发布时间:2017/3/6 11:14:00 -- 以下列这种情况为例 r2("业务状态") = "等待提交" Then e.style = "a" 应该结果 排序 姓名 性别 学历 业务状态 1 张三 男 专科 原始数据 2 张三 男 本科 等待提交 实际结果 排序 姓名 性别 学历 业务状态 1 张三 男 专科 原始数据 2 张三 男 本科 等待提交 本意是第二行和第一行逐列对照,不同的数据就显示红色,结果整个一行都是红色 |
-- 作者:有点色 -- 发布时间:2017/3/6 11:24:00 -- 直接写
If e.Row.index Mod 2 = 1 Then |
-- 作者:wyz20130512 -- 发布时间:2017/3/6 11:26:00 -- Select Case e.Col.Name Case "学历","业务状态" If e.Row("业务状态") = "等待提交" Then e.Style = "a" End If End Select
|