以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]这个绘制能否优化?(大红袍老师请进,发现新问题) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=83526) |
-- 作者:36792209 -- 发布时间:2016/4/11 19:51:00 -- [求助]这个绘制能否优化?(大红袍老师请进,发现新问题) 人员信息 If e.Col.Name = "身份证号码" Then Dim fdr As DataRow = e.Table.DataTable.Find("身份证号码 = \'" & e.Row("身份证号码") & "\' and _Identify <> " & e.Row("_Identify")) If fdr IsNot Nothing Then e.style = "样式1" End If End If 我的代码是在人员信息表里查找身份证号码相同的,有重复的就标记颜色,可是现在数据有2000行了,操作开始有延迟了,我删除绘制代码后操作速度很快, 所以想请教下各位老师能否优化以上代码? 数据是外部数据源,联网后载所有数据的。
[此贴子已经被作者于2016/4/17 12:54:20编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/4/11 19:54:00 -- 建议加一列辅助列【是否重复】
你在DataColChanged事件编写代码查找值,然后给这列赋值。
那么drawcell事件,只需要获取此列的值即可判断。
|
-- 作者:大红袍 -- 发布时间:2016/4/11 19:55:00 --
http://www.foxtable.com/help/topics/1451.htm
|
-- 作者:36792209 -- 发布时间:2016/4/11 19:55:00 -- 可惜代码不会写。。 ![]() 而且我也不想破坏目前的表结构,能不能不增加辅助列呢?虽然可以隐藏
[此贴子已经被作者于2016/4/11 19:56:48编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/4/11 20:04:00 -- AfterOpenPorject
DataTables("表A").DataCols.Add("辅助", gettype(Boolean)) DataTables("表A").DataCols("身份证号码").RaiseDataColChanged
DataColChanged事件
If e.DataCol.Name = "身份证号码" Then
Dim count As Integer = e.DataTable.Compute("count(身份证号码)", "身份证号码 = \'" & e.DataRow("身份证号码") & "\'")
If Count > 1 Then
e.DataTable.ReplaceFor("辅助", True, "身份证号码 = \'" & e.DataRow("身份证号码") & "\'")
Else
e.DataTable.ReplaceFor("辅助", False, "身份证号码 = \'" & e.DataRow("身份证号码") & "\'")
End If
End If
DrawCell事件
If e.Col.Name = "身份证号码" Then
If e.Row("辅助") = True Then
e.style = "样式1"
End If
End If
|
-- 作者:36792209 -- 发布时间:2016/4/11 20:10:00 -- 谢谢老师,我先试试看看运行效率怎么样 |
-- 作者:36792209 -- 发布时间:2016/4/11 20:18:00 -- 老师,不行啊。 我在DataColChanged输入代码确定后提示 ”列辅助已经存在!”
|
-- 作者:大红袍 -- 发布时间:2016/4/11 20:19:00 -- AfterOpenProject事件啊 |
-- 作者:大红袍 -- 发布时间:2016/4/11 20:20:00 -- 这样还不会,请上传实例。 |
-- 作者:36792209 -- 发布时间:2016/4/11 20:23:00 -- 。。原来可以上传附件,现在怎么传了没反映。。。 [此贴子已经被作者于2016/4/11 20:24:07编辑过]
|