以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 数据表字典 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145585) |
-- 作者:tld -- 发布时间:2020/1/31 23:46:00 -- 数据表字典 老师,我在学习数据表字典作为下拉框选取数据,但不知道filter怎么用。下列代码中filter的使用方法有问题,把第二列都 filter了,您帮忙看看。谢谢 Dim dmp As New TableDataMap dmp.DataTable = "表A" \'指定数据来源表 dmp.ValueCol = "第二列" \'指定取值列 dmp.DisplayCol = "第二列" \'指定显示列 \'指定下拉列表时显示哪些列的数据 dmp.ListCols = "第二列" dmp.Filter = "[第一列] = \'" & Tables("表A").current("第一列") & "\'" Tables("表A").Cols("第二列").DataMap = dmp.CreateDataMap() \'生成并设置DataMap 另外,上述代码最好放在哪个事件中,在哪里关闭datamap? [此贴子已经被作者于2020/1/31 23:54:18编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/2/1 9:05:00 -- 这个表AfterSelChange事件 Dim c As Col = e.Table.Cols(e.NewRange.ColSel) If c.Name = "第二列" AndAlso e.OldRange.RowSel <> e.NewRange.RowSel \'如果选择的是不同的行 If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then \'而且原来选择的是一个有效的数据行 Dim r As Row = e.Table.Rows(e.NewRange.Rowsel) \'获得新选择的行 If r.IsNull("第一列") Then c.DataMap = Nothing Else Dim dmp As New TableDataMap dmp.DataTable = "表A" \'指定数据来源表 dmp.ValueCol = "第二列" \'指定取值列 dmp.DisplayCol = "第二列" \'指定显示列 \'指定下拉列表时显示哪些列的数据 dmp.ListCols = "第二列" dmp.Filter = "[第一列] = \'" & r("第一列") & "\'" c.DataMap = dmp.CreateDataMap() End If End If End If |
-- 作者:tld -- 发布时间:2020/2/1 11:18:00 -- 老师,将上述代码拷贝到 afterselchange 后,在mouseleavecell中加人代码:
Tables("表A").Cols("第二列").DataMap = Nothing
有如下情况: 1:重新启动狐表,第二列的数据如图。点击第九行的第二列后 第二列 1~7行数据都没有了。 2:第二列的数据不可编辑 [此贴子已经被作者于2020/2/1 11:19:40编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/2/1 11:39:00 -- 去掉mouseleavecell代码,没有必要 |
-- 作者:tld -- 发布时间:2020/2/1 15:16:00 -- 老师,我把例子传上来,点击第二列,就会有许多行第二列的内容被隐藏 |
-- 作者:有点蓝 -- 发布时间:2020/2/1 15:22:00 -- 嗯,数据字典是对整列起作用的,经过筛选后,数据字典不存在的数据就无法显示了。 |