以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]动态数据字典问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=111562)

--  作者:whyxd
--  发布时间:2017/12/25 9:59:00
--  [求助]动态数据字典问题
"表A"PrepareEdit表事件中代码:
If e.IsFocusCell Then \'如果是焦点所在单元格
    If e.Col.Name = "第一列" Then
        If e.Row.IsNull("第二列") = False Then
            Dim dmp As New TableDataMap
            dmp.DataTable = "表B" \'指定数据来源表
            dmp.ValueCol = "第三列" \'指定取值列
            dmp.DisplayCol = "第四列" \'指定显示列
            \'指定下拉列表时显示哪些列的数据
            dmp.ListCols = "第四列"
            dmp.Sort = "第四列" \'指定排序方式
            e.col.DataMap = dmp.CreateDataMap() \'生成并设置DataMap
        Else
            e.Cancel = True
        End If
    End If
End If
"表A"StartEdit 事件代码:
If e.IsFocusCell Then \'如果是焦点所在单元格
    If e.Col.Name = "第一列" Then
        If e.Row.IsNull("第二列") = False Then
            Dim dmp As New TableDataMap
            dmp.DataTable = "表B" \'指定数据来源表
            dmp.ValueCol = "第三列" \'指定取值列
            dmp.DisplayCol = "第四列" \'指定显示列
            \'指定下拉列表时显示哪些列的数据         
            dmp.ListCols = "第四列"   
            dmp.Filter = "第五列= \'"& e.row("第二列") &"\'"
            dmp.Sort = "第四列" \'指定排序方式
            e.Col.DataMap = dmp.CreateDataMap() \'生成并设置DataMap
        Else
            e.Cancel = True
        End If
    End If
End If
这样实现了我想在选中"表A""第一列"的时候根据"表A"本行"第二列"的内容显示不同的下拉列表,显示"表B""第四列"内容,取"表B""第三列"值。
但是有一点体验不太好,就是每次点开"表A""第一列","表A"其他行的"第二列"的内容如果和本行第二列内容不相同,根据设置的数据字典,这些行的"第一列"会显示空白,重新选中才会显示,请教如何改进。

--  作者:有点甜
--  发布时间:2017/12/25 10:12:00
--  

 你这种是没办法的。数据字典重新生成后,不在数据字典里面的内容,就显示空白,这个是正常的。

 

 建议你用界面三处理 http://www.foxtable.com/webhelp/scr/2465.htm

 


--  作者:whyxd
--  发布时间:2017/12/25 10:25:00
--  回复:(有点甜) 你这种是没办法的。数据字典重...
好吧,谢谢了。
我还是用数据字典吧,因为要实现,取值是ID,显示是内容。为了增加可读性。。
还有一个问题是,怎么判断数据字典内容是否为空?因为第二列的内容决定第一列的数据字典,想要实现第二列更改时,如果数据字典内容为空,第一列值为-1.

--  作者:有点甜
--  发布时间:2017/12/25 11:02:00
--  
以下是引用whyxd在2017/12/25 10:25:00的发言:
好吧,谢谢了。
我还是用数据字典吧,因为要实现,取值是ID,显示是内容。为了增加可读性。。
还有一个问题是,怎么判断数据字典内容是否为空?因为第二列的内容决定第一列的数据字典,想要实现第二列更改时,如果数据字典内容为空,第一列值为-1.

 

你可以设置数据字典和下拉窗口一起的。选择的时候,用下拉窗口,选择结束以后,设置数据字典。

 

新问题,表数据是根据数据字典的值显示内容的,你无法修改显示的值,你只能修改表数据。


--  作者:whyxd
--  发布时间:2017/12/25 11:18:00
--  回复:(有点甜)以下是引用whyxd在2017/12/25 10:25:...
如何判断下拉选择结束??


--  作者:有点甜
--  发布时间:2017/12/25 12:15:00
--  
以下是引用whyxd在2017/12/25 11:18:00的发言:
如何判断下拉选择结束??

 

如果是界面三,窗口关闭的时候,不就是下拉结束?

 

如果是数据字典,afterEdit事件不就是下拉结束?


--  作者:whyxd
--  发布时间:2017/12/25 15:04:00
--  回复:(有点甜)以下是引用whyxd在2017/12/25 11:18:...
知道了,谢谢