Foxtable(狐表)用户栏目专家坐堂 → [求助]prepareedit删除行的问题


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

主题:[求助]prepareedit删除行的问题

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


加好友 发短信
等级:九尾狐 帖子:2221 积分:18261 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]prepareedit删除行的问题  发帖心情 Post By:2020/7/28 15:18:00 [只看该作者]

帮助里的prepareedit事件最下面加了isfocuscell,说可以提高效率。现在遇到一个问题,如果下拉列在第一列的时候,如果选中行号,右键删除,界面就进入死亡模式,不动了。但是如果不在第一列,就能立马删除成功。但有时候,下拉列确需放在第一列咋办?

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


加好友 发短信
等级:九尾狐 帖子:2221 积分:18261 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/7/28 15:21:00 [只看该作者]

补充:我用的datamap,还没试combolist

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/28 15:41:00 [只看该作者]

prepareedit事件不能使用动态字典,和动态目录树,会卡死,如果要使用,放到AfterSelChange

Dim cl As Col = e.Table.Cols(e.NewRange.ColSel)
If cl.Name = "第四列" Then 
    Dim dmp As New TableDataMap
    dmp.DataTable = "表A" '指定数据来源表
    dmp.ValueCol = "第一列" '指定取值列
    dmp.DisplayCol = "第一列" '指定显示列
    '指定下拉列表时显示哪些列的数据
    dmp.ListCols = "第一列"
    cl.DataMap = dmp.CreateDataMap() '生成并设置DataMap
End If


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


加好友 发短信
等级:九尾狐 帖子:2221 积分:18261 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/7/28 20:01:00 [只看该作者]

如果希望选中行的某一列如"Type"列的值=1的时候,就不允许在“第四列”做操作,应当在哪里写代码呢?
Dim c As Col = e.Table.Cols(e.NewRange.ColSel)
Select Case c.name
    Case "X"
        Dim r As Row = e.Table.Rows(e.NewRange.Rowsel) '获得新选择的行
            Dim dmp As New TableDataMap
            dmp.DataTable = "A"
            dmp.ValueCol = "C"
            dmp.DisplayCol = "T"
            dmp.ListCols = "C,T,U"
            dmp.Sort = "_SortKey"
            c.DataMap = dmp.CreateDataMap()
End Select

prepareedit中
if e.col.name = "X" andalso e.row("Type") = 1 then 
e.cancel = true
end if 

----这样似乎可以
[此贴子已经被作者于2020/7/28 20:15:05编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/28 20:16:00 [只看该作者]

Type如果是字符列

if e.col.name = "X" andalso e.row("Type") = "1" then 
e.cancel = true
end if 

 回到顶部