Foxtable(狐表)用户栏目专家坐堂 → [求助]表PrepareEdit事件代码出现字符显示消失程序卡顿


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

主题:[求助]表PrepareEdit事件代码出现字符显示消失程序卡顿

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


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
[求助]表PrepareEdit事件代码出现字符显示消失程序卡顿  发帖心情 Post By:2019/4/2 21:02:00 [只看该作者]

老师,我在表的PrepareEdit事件中写下如下代码,

If e.IsFocusCell Then '如果是焦点所在单元格
    Dim aa() As String ={"T","N","M"}
    For Each a As String In aa
        If e.Col.Name = a Then '如果正在编辑的是a列
            Dim dmp As New TableDataMap
            dmp.DataTable = "TNMStage" '指定数据来源表
            dmp.ValueCol = "TNM" '指定取值列
            dmp.DisplayCol = "TNM" '指定显示列
            dmp.ListCols = "肿瘤类型,TNM,分期标准,Version"
            dmp.Filter = "[肿瘤类型] = '" & e.Row("肿瘤类型") & "' and [TNM] Like '" & a & "%" & "'"
            Tables("tblCStage").Cols(a).DataMap = dmp.CreateDataMap() '生成并设置DataMap
        End If
    Next   
End If
程序可以运行,如图1:
 
图片点击可在新窗口打开查看此主题相关图片如下:图1.jpg
图片点击可在新窗口打开查看
 
 
但鼠标点击下方单元格时,上方已编辑单元格的字符就不显示了,如图2:
 
图片点击可在新窗口打开查看此主题相关图片如下:图2.jpg
图片点击可在新窗口打开查看
 
 
当鼠标再次点击已编辑单元格,消失的字符又显示了,如图3:
 
图片点击可在新窗口打开查看此主题相关图片如下:图3.jpg
图片点击可在新窗口打开查看
 
 
而且程序好像很慢,有明显卡顿现象。请问老师,这是什么原因,如何处理呢?





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


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By:2019/4/2 21:22:00 [只看该作者]

附项目文件

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/2 21:25:00 [只看该作者]

不要在PrepareEdit设置动态字典,这是一个无法解决的bug

代码放到AfterSelChange事件
Dim cl As Col = e.Table.Cols(e.NewRange.ColSel)
dim r as row = e.Table.Rows(e.NewRange.RowSel)
Dim aa() As String ={"T","N","M"}
    For Each a As String In aa
        If cl.Name = a Then '如果正在编辑的是a列
            Dim dmp As New TableDataMap
            dmp.DataTable = "TNMStage" '指定数据来源表
            dmp.ValueCol = "TNM" '指定取值列
            dmp.DisplayCol = "TNM" '指定显示列
            dmp.ListCols = "肿瘤类型,TNM,分期标准,Version"
            dmp.Filter = "[肿瘤类型] = '" & r("肿瘤类型") & "' and [TNM] Like '" & a & "%" & "'"
            e.Table.Cols(a).DataMap = dmp.CreateDataMap() '生成并设置DataMap
        End If
    Next   

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


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By:2019/4/2 21:37:00 [只看该作者]

 

把代码放到AfterSelChange事件后,仍出现字符消失的问题


图片点击可在新窗口打开查看此主题相关图片如下:2019-04-02_21-30-33.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/2 21:48:00 [只看该作者]

显示不全是因为数据没有加载。如果使用字典必须加载全部数据。如果做动态加载的,建议使用自定义下拉窗口:http://www.foxtable.com/webhelp/scr/2465.htm

 回到顶部