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