以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  listbox我想组合显示,但是table里面的数据是datmap  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145967)

--  作者:a937775799
--  发布时间:2020/2/13 1:35:00
--  listbox我想组合显示,但是table里面的数据是datmap
我看帮助对listbox事件设置
首先初始化
Dim lb As WinForm.ListBox = e.Form.Controls("lb")
lb.DisplayMember = "employeeState" \'设置显示列
lb.ValueMember = "employeeState" \'设置取值列
lb.DataSource =  "employeeLog"  \'列表项目来自于客户表
lb.DataFilter = "employeeSFId = \'" & dr("employeeSFId") & "\' and  agreementCode = \'" & dr("agreementCode") & "\'"
然后事件
e.Value = e.ListItem( "employeeState"  ) & "|" & e.ListItem( "employeeStateTime"  )
但是有个问题
employeeLog表里面employeeState列是这样设置的
mdm.ValueCol = 0
mdm.DisplayCol = 1
Tables( e.Form.TableName ).Cols("employeeState").DataMap = mdm.CreateDataMap()

这样我listbox里面显示 还是之前的mdm.ValueCol的数据,而我要显示mdm.DisplayCol的数据

--  作者:有点蓝
--  发布时间:2020/2/13 10:21:00
--  
字典完整代码给出来看看,如果使用的是MultiDataMap没有办法,如果使用的是DataMap,可以这样

mdm.ValueCol = 0
mdm.DisplayCol = 1
vars("map") = mdm
Tables( e.Form.TableName ).Cols("employeeState").DataMap = mdm.CreateDataMap()

……
e.Value = vars("map")(e.ListItem( "employeeState")) & "|" & e.ListItem( "employeeStateTime"  )

--  作者:a937775799
--  发布时间:2020/2/13 10:29:00
--  
打开窗口后初始化
\'\'\'设置工作流代码[flowCode] = \'pro_p\'
drs = DataTables("flow").Select("flowCode = \'pro_p\' ", "flowPx" )
Tables( e.Form.TableName ).Cols("employeeState").DataMap = Functions.Execute("下拉列表取值显示完善",drs,  "flowPx","flowMain"  )
-------------------------------------------------------------------
下拉列表取值显示完善函数
Dim drs As List(of DataRow ) = args(0)
Dim mdm As New MultiDataMap 
For Each dr As DataRow In drs
    mdm.add( dr(args(1)) & "|" & dr(args(2))    )
Next
mdm.ValueCol = 0
mdm.DisplayCol = 1
Return mdm.CreateDataMap()


可以怎么改改吗


--  作者:有点蓝
--  发布时间:2020/2/13 10:34:00
--  
改为这个字典:http://www.foxtable.com/webhelp/topics/0580.htm
--  作者:a937775799
--  发布时间:2020/2/13 11:07:00
--  
Dim drs As List(of DataRow ) = args(0)
Dim mdm As New DataMap 
For Each dr As DataRow In drs
    mdm.add( "" & dr(args(1)) , dr(args(2))    )
Next

Return mdm

这样就可以了 ,但是我发现个问题找了半天  mdm.add( dr(args(1)) , dr(args(2))    ) ,如果dr(args(1)) 是数字 就不能正常显示,
所以我改成了  mdm.add("" & dr(args(1)) , dr(args(2))    )

--  作者:有点蓝
--  发布时间:2020/2/13 11:26:00
--  
这个原因帮助里有说明的