以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗口Table列显示代码(改良版)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=4008)

--  作者:reachtone
--  发布时间:2009/8/23 13:55:00
--  窗口Table列显示代码(改良版)

在老六代码的启发下,本人做了一个类似于DataList的显示函数。不仅可以自动隐藏无关列,还可以按照设定的列项目自动显示宽度,列显示顺序为设定的列名顺序。datalist函数代码如下:

\'显示列
For Each c As Col In Args(0).Cols
    c.Visible = Args(1).Contains(c.name & ",")
Next
\'列宽度及显示位置
Dim i as Integer = 0
Dim ColName as String
Dim Vals As New List(Of String)
Vals.AddRange(Args(1).Split("|"))
Args(0).Redraw = False
For Each Val as String in Vals
    ColName = Val.substring(0,Val.indexof(","))   \'取得列名称
    Args(0).Cols(ColName).Move(i)                 \'移动位置
    Args(0).Cols(ColName).Width = Val.substring(Val.indexof(",")+1)    \'设置宽度
    i = i + 1
Next
Args(0).Redraw = True

[此贴子已经被狐狸爸爸于2009-8-24 15:53:05编辑过]

--  作者:reachtone
--  发布时间:2009/8/23 13:58:00
--  
调用方法:
Functions.Execute("DataList",表名,列项目)


如:
Functions.Execute("DataList",Tables("窗口1_Table1"),"规格,100|高,70|宽,70|尺寸,158|面积,70|占版数,50")
[此贴子已经被作者于2009-8-23 14:47:17编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/8/23 14:14:00
--  
不错,很方便的
--  作者:yangming
--  发布时间:2009/8/23 14:21:00
--  

学习研究!


--  作者:kylin
--  发布时间:2009/8/23 15:05:00
--  

 好啊,收藏!


--  作者:czy
--  发布时间:2009/8/23 16:49:00
--  
学习!


--  作者:migold
--  发布时间:2009/8/23 17:19:00
--  
学习一下,今晚再试试
--  作者:blackzhu
--  发布时间:2009/8/23 20:22:00
--  
以下是引用reachtone在2009-8-23 13:58:00的发言:
调用方法:
Functions.Execute("DataList",表名,列项目)


如:
Functions.Execute("DataList",Tables("窗口1_Table1"),"规格,100|高,70|宽,70|尺寸,158|面积,70|占版数,50")
[此贴子已经被作者于2009-8-23 14:47:17编辑过]

老大能不能做个小例子看看


--  作者:狐狸爸爸
--  发布时间:2009/8/24 8:39:00
--  

楼主已经给出例子了,注意他的DataList,指的是自定义函数的名称,并非我们通常所说的DataList


--  作者:baoxyang
--  发布时间:2009/8/24 10:32:00
--  

加入一行代码为改变显示列的位置,
With Args(0)   \'数据表
    Dim i as Integer = 0
    For Each c As Col In .Cols
        Dim Vals() As String = Args(1).Split("|")
        c.Visible = Args(1).Contains(c.name & ",")      \'加逗号可以保证列名完全匹配
        If c.Visible = True
            .cols(c.name).move(i)
            c.Width = Vals(i).substring(Vals(i).indexof(",")+1)
            i = i + 1
        End If
    Next
End With
红色部分,怎么不生效呢?目的为,把显示列的位置进行调整,请老大看看,这样是否写错了?