以普通用户登录后,第一次增加行,在地址列输入字符,打开下拉列表窗口,可正常选择。以后,再增加行,在地址列打开下拉列表窗口后,报错。截图如下:
此主题相关图片如下:地址列下拉列表错误.jpg
但是,以开发者登录,则不会出现上述错误。
源代码:
表事件
订户信息表_PrepareEdit
Select Case e.Col.name
Case "地址"
e.Col.dropform="地址窗口-订户表"
'vars("")
Case "单位"
e.Col.dropform="级别窗口"
End Select
订户信息表_ValidateEdit
If e.Col.DroppedDown Then '如果下拉窗口已经打开
e.Col.CloseDropDown() '则关闭下拉窗口
End If
订户信息表_ChangeEdit
If e.Col.name = "地址" Then '如果输入的是产品编码
' e.Col.dropform="地址窗口-订户表"
If e.Col.DroppedDown Then '如果下拉窗口已经打开
Dim trv As WinForm.TreeView = Forms("地址窗口-订户表").Controls("TreeView1")
If e.Text > "" Then '如果内容为空
For Each nd As WinForm.TreeNode In trv.AllNodes
If nd.Text.IndexOf(e.Text) >= 0 Then
trv.StopRedraw()
trv.SelectedNode = nd
nd.EnsureVisible()
trv.ResumeRedraw()
trv.Select()
Exit For
End If
Next
End If
End If
End If
订户信息表_KeyPressEdit
'If e.Col.name = "三级" Then
'If e.Col.DroppedDown = False '如果下拉窗口没有打开
'e.Col.OpenDropDown() '打开下拉窗口
'End If
'End If
If e.Col.name = "地址" Then
If e.Col.DroppedDown = False '如果下拉窗口没有打开
e.Col.OpenDropDown() '打开下拉窗口
End If
End If
nodemouseclick代码与说明文件一样,只是列名称不同
TreeView(目录树)的NodeMouseClick事件代码设置为:
If e.Node.Level = 1 Then '如果单击的是第二层节点
Dim tr As Row = Tables("客户").Current
Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
tr("省市") = dr("省市")
tr("县市") = dr("县市")
tr("区号") = dr("区号")
tr("邮编") = dr("邮编")
e.Form.DropDownBox.Value = tr("县市") '这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
| e.Form.DropDownBox.CloseDropdown()
End If
<!--EndFragment-->
[此贴子已经被作者于2016/12/2 17:48:23编辑过]