以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  Datalist中显示的数据,如何找到指定的数据?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=3675)

--  作者:baoxyang
--  发布时间:2009/7/23 11:27:00
--  Datalist中显示的数据,如何找到指定的数据?
Datalist中显示的数据,如何找到指定列满足条件的数据的行。并光标或选定颜色区分(设为当前行),请教如何实现?
--  作者:yangming
--  发布时间:2009/7/23 11:38:00
--  

RowFilter

设置显示条件表达式,使用此属性时,DataList必须已经绑定好。

示例

例如希望单击某个按钮,DataList只显示华北地区的客户:

Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
dst
.RowFilter = "[地区] = \'华北\'"

区域选定颜色可能不行,本身DataList自带颜色

[此贴子已经被作者于2009-7-23 11:39:16编辑过]

--  作者:baoxyang
--  发布时间:2009/7/23 12:12:00
--  
例如,我已找到相关行,行号为2,如何使用此行为当前行,目的就是为了得到选定行的颜色,因为不能自行设置颜色。为了区分找到行是哪一行?
--  作者:yangming
--  发布时间:2009/7/23 12:17:00
--  
Find好象不能用在DataList中,你可以用筛选,筛选出来的行显示在DataList中不行吗?
--  作者:baoxyang
--  发布时间:2009/7/23 12:23:00
--  
不行的,如行的话,就不会这样折腾了!
--  作者:baoxyang
--  发布时间:2009/7/23 12:29:00
--  

还是老大能提供选定行进行着色就好了!不知老大是否有更大目标及思路来解决Datalist目录遇到一些问题。因目前Datalist与Table是各有优点及特点,两者都不能缺。但有些功能又受限呀。


--  作者:baoxyang
--  发布时间:2009/7/23 12:54:00
--  
已OK!
--  作者:yangming
--  发布时间:2009/7/23 13:02:00
--  
以下是引用baoxyang在2009-7-23 12:54:00的发言:
已OK!

介绍一下你的办法,可否?


--  作者:baoxyang
--  发布时间:2009/7/23 15:19:00
--  
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
    Dim dr as DataRow = dst.Current \'获得选定行
    If dr Is Nothing Then
          Return
    End If
If e.Control = True then
    dim r as integer = dst.Position
    If dst.GetChecked(r) = false Then
       dst.SetChecked(r, True)
       e.form.controls("textbox16").value = e.form.controls("textbox16").value + dr("重量")
       e.form.controls("textbox17").value = e.form.controls("textbox17").value + dr("件数")
    end if
end if
If e.Alt = True then
    dim r as integer = dst.Position
    If dst.GetChecked(r) = true Then
       dst.SetChecked(r, false)
       e.form.controls("textbox16").value = e.form.controls("textbox16").value - dr("重量")
       e.form.controls("textbox17").value = e.form.controls("textbox17").value - dr("件数")
    end if
end if

--  作者:baoxyang
--  发布时间:2009/7/23 15:25:00
--  
发错了,Sorry!下面是
dim ss as string
If e.KeyCode = Keys.Enter then 
    Dim dst As WinForm.DataList = Forms("出库加").Controls("DataList1")     
    dim s as string = e.Sender.text
    For i as integer = 0 to dst.count -1
       Dim dr as DataRow = dst.GetDataRow(i)
       if dr("捆包号") = s then
          If dst.GetChecked(i) Then
             ss = "找到相关记录!该行之前已被选定!!"
          else
             dst.SetChecked(i, True)
             ss = "找到相关记录!默认已选定该行!!"
             Forms("出库加").Controls("textbox16").value = Forms("出库加").Controls("textbox16").value + dr("重量")
             Forms("出库加").Controls("textbox17").value = Forms("出库加").Controls("textbox17").value + dr("件数")           
          end if
          dst.position = i
          exit for
       end if  
    Next
    if ss Is nothing then
       ss = "未找到相关记录,请重新查找!"
    end if
     e.Cancel = True
end if
e.form.controls("textbox2").value = ss