以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自定义下拉列表窗口的报错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193064)

--  作者:ouyangfenghuan
--  发布时间:2024/8/13 22:02:00
--  自定义下拉列表窗口的报错

图片点击可在新窗口打开查看此主题相关图片如下:下拉列表窗口报错.png
图片点击可在新窗口打开查看
在输入文字时自动打开下拉窗口会报错,通过小箭头下拉的不会报错
下拉表数据没有绑定副本表,是通过Fill生成的


--  作者:ouyangfenghuan
--  发布时间:2024/8/13 22:05:00
--  
将窗口的DropDownClosed事件代码
If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("氧化产品名称录入项目列表_Table1")
    Dim r As DataRow = tbl.Current.DataRow
    If R IsNot Nothing Then
        \'Dim r As DataRow = tbl.Current.DataRow
        e.Form.DropDownBox.Value = r("产品名称")
        Tables("材料收货表.氧化收货表").Current("委外单号") = r("委外流水号")
        Tables("材料收货表.氧化收货表").Current("订单表序号") = r("订单表序号")
        If Tables("材料收货表.氧化收货表").Current.IsNull("工艺内容") Then
            Tables("材料收货表.氧化收货表").Current("工艺内容") = r("要求")
        End If
        
        If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
            e.Form.DropTable.FinishEditing() 
        Else \'如果是通过窗口下拉的
            PopMessage("ti", "tis", PopiconEnum.Question, 2)
            e.Form.DropDownBox.WriteValue() 
        End If
    End If
End If

--  作者:ouyangfenghuan
--  发布时间:2024/8/13 22:06:00
--  
窗口的DropDownOpened事件代码
Dim txt As String = e.Form.DropDownBox.Text
Dim tbl As Table = Tables("氧化产品名称录入项目列表_Table1")
Dim filter As String
filter = "[完成] = 0 And 加工商= \'" & Tables("材料收货表.氧化收货表").Current("供应商") & "\'"
tbl.Fill("Se-le-ct * From {外发出货单} Where " & Filter , "rx", True)

\'tbl.DataTable.LoadFilter = filter
\'tbl.DataTable.Load
If txt = "" Then
    tbl.Filter = filter 
Else
    txt = "\'%" & txt & "%\'"
    filter="[完成] = 0 And  加工商= \'" & Tables("材料收货表.氧化收货表").Current("供应商") & "\' And (产品名称 Like " & txt & " Or 订单表序号 Like " & txt & ")"
    tbl.Filter = filter 
    tbl.Sort = "日期 DESC"
End If
e.Form.DropDownBox.Select() \'将输入焦点返回下拉列表框

--  作者:有点蓝
--  发布时间:2024/8/13 22:46:00
--  
试试

DropDownClosed事件代码
If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("氧化产品名称录入项目列表_Table1")
    Dim r As Row = tbl.Current
    If R IsNot Nothing Then
        e.Form.DropDownBox.Value = r("产品名称")
dim r2 as row = Tables("材料收货表.氧化收货表").Current
        r2("委外单号") = r("委外流水号")
        r2t("订单表序号") = r("订单表序号")
        If r2.IsNull("工艺内容") Then
            r2("工艺内容") = r("要求")
        End If
    End If
End If