"表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"其他行的"第二列"的内容如果和本行第二列内容不相同,根据设置的数据字典,这些行的"第一列"会显示空白,重新选中才会显示,请教如何改进。