以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码拼装的多列数据字典不显示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=60868)

--  作者:TongOk
--  发布时间:2014/12/2 19:43:00
--  代码拼装的多列数据字典不显示
我在表事件(ChangeEdit)中写了如下代码:
If e.Col.Name = "khno"Then
     Dim dr As Row = e.Row
     Dim cmd As New SQLCommand
     Dim dt As DataTable
     \'cmd.C 不写的话默认是内部数据源
     cmd.CommandText = "SELECT personno,name,sex,telephone,gw From {person} Where [companyno] = \'" & dr("khno") &"\'"
     dt = cmd.ExecuteReader()
     
     Dim mdm As New MultiDataMap 
     For Each dr1 As DataRow In dt.DataRows
        mdm.add(dr1("personno")&"|"&dr1("name")&"|"&dr1("sex")&"|"&dr1("telephone")&"|"&dr1("gw"))
     Next
    mdm.ValueCol = 0
    mdm.DisplayCol = 1
    Tables("order").Cols("linkman").DataMap = mdm.CreateDataMap()

End If

我的for循环中能取到我的查询出来的数据,但是为啥在表中显示不出这个多列数据字典呢?
如果我第一次时(第一行数据)触发这个事件生成了字典,那么我在第二次时(第一行数据)触发这个事件生成了字典这两次之间会不会有影响呢?

--  作者:有点甜
--  发布时间:2014/12/2 19:52:00
--  

  我测试没有问题。

 

Dim dmp As New MultiDataMap
dmp.Add("1|居住中")
dmp.Add("2|已离开")
dmp.ValueCol = 0
dmp.DisplayCol = 1
Tables("表A").Cols("第二列").DataMap = dmp.CreateDataMap


--  作者:有点甜
--  发布时间:2014/12/2 19:52:00
--  
 空白,是因为,你动态生成了字典,字典改变以后,不在字典里面的值,就会显示空白的。
--  作者:TongOk
--  发布时间:2014/12/2 21:54:00
--  
我又测试了一下,用表结构的话是可以的。可是我是写在窗口的一个table中就没这个效果,不知道为啥
--  作者:有点甜
--  发布时间:2014/12/2 21:56:00
--  

 具体例子放上来。

 

 


--  作者:TongOk
--  发布时间:2014/12/2 21:56:00
--  
如果是在窗口中的Table的话连下拉的效果都没有,可如果在表结构下就有这个效果
--  作者:有点甜
--  发布时间:2014/12/2 21:57:00
--  
 是不是你写错了表名啊,窗口表要这样表示 Tables("窗口1_Table1")
--  作者:TongOk
--  发布时间:2014/12/2 22:08:00
--  
在项目属性的事件中关掉第三句代码,订单管理表结构能看到效果。打开第三句代码在窗口中就没有效果。生成多列字典的代码在表属性的ChangeEdit事件中
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:factoryproject.table


--  作者:TongOk
--  发布时间:2014/12/2 22:10:00
--  
这个生成多列字典的方式好像是对一列都起作用啊,有没有其它的比较好的方式。上一行的筛选条件和下一行的不一样啊。这样会有影响的啊
--  作者:有点甜
--  发布时间:2014/12/2 22:14:00
--  
 什么意思啊,没有问题啊,不执行这句代码? \'visibleTables("order","订单管理",False) \'隐藏所有表,这个方法写在全局代码中