以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 多个窗口共用下拉窗口? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=33940) |
||||
-- 作者:wqb1102 -- 发布时间:2013/5/27 16:30:00 -- 多个窗口共用下拉窗口? 狐爸,在使用列表项目过程中,发现原窗口中客户可根据县名筛选出相应的客户供录入,但现在几个窗口中筛选出的客户都是出库表中的县所筛选出的。 代码: If e.Node.Level = 2 Then \'如果单击的是第三层节点 Dim ps() As String = e.Node.FullPath.Split("\\") Dim tr As Row If e.Form.DropTable IsNot Nothing Then If e.Form.DropTable.Current IsNot Nothing Then tr = e.Form.DropTable.Current End If Else If e.Form.DropDownBox.BindingField > "" Then Dim nm As String = e.Form.DropDownBox.BindingField nm = nm.Split(".")(0) tr = Tables(nm).Current End If End If If tr Is Nothing Then Return End If Dim dr As DataRow = DataTables("行政").Find("省= \'" & ps(0) & "\' And 市= \'" & ps(1) & "\' And 县= \'" & ps(2) & "\'" ) If dr IsNot Nothing Then \'如果在行政区划表找到对应的行,则将此行的值写入出库表的当前行. tr("省") = dr("省") tr("市") = dr("市") tr("县") = dr("县") e.Form.DropDownBox.Value = tr("县") \'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据. End If e.Form.DropDownBox.CloseDropdown() \'关闭下拉目录树 End If 是否因为代码中红色部分原因? 如:门面窗口中Textchanged事件代码: Dim drp As WinForm.DropDownBox = e.sender If drp.DroppedDown Then \'如果下拉窗口已经打开 Dim txt As String = e.sender.Text Dim tbl As Table = Tables("客户录入_Table1") If txt = "" Then tbl.Filter = "县 = \'" & Tables("门面").current("县") & "\'" Else txt = "\'*" & txt & "*\'" tbl.Filter = "县 = \'" & Tables("门面").current("县") & "\' And 客户 Like " & txt End If End If
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/5/27 17:19:00 -- 看不懂你的问题,你设置了筛选,任何时候都可以取消筛选啊
|
||||
-- 作者:wqb1102 -- 发布时间:2013/5/27 17:26:00 -- 不同表的窗口中的客户要根据已录入的县来筛选出相应的客户,但现在几个表的窗口中的客户都是根据出库表中的县筛选客户,不是根据当前表来筛选。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/5/27 17:29:00 -- 你上面的代码,哪里有和出库表相关的筛选? 提问的时候,尽量讲清楚来龙去脉。 |
||||
-- 作者:wqb1102 -- 发布时间:2013/5/27 20:04:00 -- 那怎么会出现在其他表的窗口中录入省、市、县后,点击客户的下拉窗口,所筛选出来的客户是出库表中的县所属的客户。在没有使用第一个代码前,各窗口的客户是根据当前表中的县筛选出来的 |
||||
-- 作者:wqb1102 -- 发布时间:2013/5/28 9:13:00 -- 今天再看一楼的例子。发现 1、项目中的列表项目和客户录入都是几个表共用的下拉窗口。其中“列表项目”窗口狐爸已帮设置过代码,但“客户录入”窗口还是原代码: Dim txt As String = e.Form.DropDownBox.Text Dim tbl As Table = Tables("客户录入_Table1") If txt = "" Then tbl.Filter = "县 = \'" & Tables("出库").current("县") & "\'" Else txt = "\'*" & txt & "*\'" tbl.Filter = "县 = \'" & Tables("出库").current("县") & "\' And 客户 Like " & txt End If e.Form.DropDownBox.Select() \'将输入焦点返回下拉列表框 所以造成几个表都根据“出库”表中的县来筛选客户。 问题: 1、列表项目和客户录入两个窗口是否需指定所有者表; 2、“客户录入”窗口的代码 Dim txt As String = e.Form.DropDownBox.Text Dim tbl As Table = Tables("客户录入_Table1") If txt = "" Then tbl.Filter = "县 = \'" & Tables("出库").current("县") & "\'" Else txt = "\'*" & txt & "*\'" tbl.Filter = "县 = \'" & Tables("出库").current("县") & "\' And 客户 Like " & txt End If e.Form.DropDownBox.Select() \'将输入焦点返回下拉列表框 要如何设置使其根据当前窗口(使用下拉窗口的)所录入的县来筛选所属客户。 谢谢!
|
||||
-- 作者:wqb1102 -- 发布时间:2013/5/28 10:34:00 -- 那位高手帮看一下? |
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/5/28 11:56:00 -- 其实学编程,关键在于理解,如果你理解了我上次写给你的代码,那么这个问题你可以用同样的方法解决:
Dim txt As String = e.Form.DropDownBox.Text
Dim tbl As Table = Tables("客户录入_Table1")
Dim r AS row
If e.form.DopTable IsNot Nothing Then
r = e.Form.DropTable.Current
End If
Dim flt as String
If txt = "" Then
if r IsNot Nothing Then
flt= "县 = \'" & r("县") & "\'"
End if
Else
txt = "\'*" & txt & "*\'"
if r IsNot Nothing Then
flt = "县 = \'" & r("县") & "\' And 客户 Like " & txt
else
flt = "客户 Like " & txt
end if
End If
tbl.Filter= flt
e.Form.DropDownBox.Select() \'将输入焦点返回下拉列表框 |
||||
-- 作者:wqb1102 -- 发布时间:2013/5/28 14:13:00 -- 狐爸,我试了多次都没办法,才请教。 多谢了。
|
||||
-- 作者:wqb1102 -- 发布时间:2013/5/28 14:15:00 -- 8楼代码少了一个字母,修改如下: Dim txt As String = e.Form.DropDownBox.Text Dim tbl As Table = Tables("客户录入_Table1") Dim r AS row If e.form.DropTable IsNot Nothing Then r = e.Form.DropTable.Current End If Dim flt as String If txt = "" Then if r IsNot Nothing Then flt= "县 = \'" & r("县") & "\'" End if Else txt = "\'*" & txt & "*\'" if r IsNot Nothing Then flt = "县 = \'" & r("县") & "\' And 客户 Like " & txt else flt = "客户 Like " & txt end if End If tbl.Filter= flt e.Form.DropDownBox.Select() \'将输入焦点返回下拉列表框 |