以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]prepareedit删除行的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=153002) |
-- 作者:chnfo -- 发布时间:2020/7/28 15:18:00 -- [求助]prepareedit删除行的问题 帮助里的prepareedit事件最下面加了isfocuscell,说可以提高效率。现在遇到一个问题,如果下拉列在第一列的时候,如果选中行号,右键删除,界面就进入死亡模式,不动了。但是如果不在第一列,就能立马删除成功。但有时候,下拉列确需放在第一列咋办? |
-- 作者:chnfo -- 发布时间:2020/7/28 15:21:00 -- 补充:我用的datamap,还没试combolist |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/7/28 20:16:00 -- Type如果是字符列 if e.col.name = "X" andalso e.row("Type") = "1" then e.cancel = true end if |