以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何让代码生成的列表项目不用排序?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=4306)

--  作者:程兴刚
--  发布时间:2009/9/11 8:18:00
--  [求助]如何让代码生成的列表项目不用排序?

If e.Col.Name = "进货人" Then \'如果如果当前列的列名称为"来源"列,然后
    Dim ls As New List(Of String)
    Dim cs AS String
    ls = DataTables("入库").GetUniqueValues("","进货人")
    For each s As String In ls
        If cs > "" Then
            cs = cs & "|"
        End If
        cs = cs & s
    Next
    e.Col.Combolist ="|"+cs+"|"
End If
 
也就是只按照输入的先后顺序排列!
 
比如我在按照输入:3、9、6、5、1的顺序增加5行,我需要得到:3|9|6|5|1,但又不允许重复,比如我在按照输入:3、9、6、6、5、1、1的顺序增加7行,我需要得到的还是:3|9|6|5|1,别的方法也可以,只要能实现,要求执行速度要优先!
[此贴子已经被作者于2009-9-11 8:20:21编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/9/11 8:22:00
--  
If e.Col.Name = "进货人" Then
    Dim ls As New List(Of String)
    Dim cs As String
    For Each r As DataRow In DataTables("入库").DataRow
        dim s As string = r("进货人")
        If s > "" AndAlso ls.Contains(s) = False
            lst.Add(s)
            cs = cs & "|" & s
        End If
    Next
    e.Col.Combolist = cs.Trim("|")
End If
[此贴子已经被作者于2009-9-11 9:14:38编辑过]

--  作者:程兴刚
--  发布时间:2009/9/11 8:34:00
--  
谢谢!

再请教一下:我在每次操作都需要用for........next循环语句判断1~N行的结果是否是我指定的值,但操作时运行有点慢,所以希望能否通过不排序列表项目是否等于我指定的值(标准值可以用字符型变量提前生成),以实现提高速度,根据贺老师和大家的经验,是我前者判断方式快,还是后者想法合适?
       (注:用户的操作有可能会将某一个单元格正确的值换为不正确的,所以,每次必须判断某列的每一行是否均为指定值,是,则提示成功,否则不提示,等待用户继续操作,所以,需要一个快捷的判断方法!)


--  作者:狐狸爸爸
--  发布时间:2009/9/11 8:38:00
--  
单个值的判断, 用DataTable的Find方法,是不需要排序的。
--  作者:程兴刚
--  发布时间:2009/9/11 8:41:00
--  

谢谢,我研究研究!