以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  筛选后的数据显示  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=3088)

--  作者:blackzhu
--  发布时间:2009/6/10 12:57:00
--  筛选后的数据显示
  我们筛选后,我想用颜色将所筛选的数据标出.比如我筛选一个订单为"W5",我想用黄色将"W5"标出,背景或者字体均可.代码怎么写?
--  作者:狐狸爸爸
--  发布时间:2009/6/10 12:57:00
--  
看drawcell事件
--  作者:yangming
--  发布时间:2009/6/10 13:00:00
--  

DrawCell

在绘制单元格的时候执行。

e参数属性有:

Form:     触发事件的窗口
Sender:   触发事件的控件
DataRow:  正在绘制的数据行
ColName: 正在绘制的列的名称
Style:   用于绘制单元格的样式名称

示例

假定DataList用于显示订单数据,我们希望对于大于5000的金额,用红底蓝字标出,对于大于4000的金额,用蓝底白字标出。

首先在窗口的AfterLoad事件中设置代码,增加两个样式:

Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
dst.AddUserStyle(
"a",Color.Red,Color.Blue)
dst.AddUserStyle(
"b",Color.Blue,Color.White)

然后将DataList的DrawCell事件设为:

If e.ColName = "金额" Then
    Dim Val As Double = e.DataRow("金额")
    if
Val > 5000
Then
        e.Style =
"a"
   
ElseIf Val > 4000 Then
        e.Style=
"b"
   
End If
End
If

如是DataList,也可以看帮助中的"DataList的颜色标记功能"

[此贴子已经被作者于2009-6-10 13:01:00编辑过]

--  作者:blackzhu
--  发布时间:2009/6/10 14:12:00
--  
以下是引用yangming在2009-6-10 13:00:00的发言:

DrawCell

在绘制单元格的时候执行。

e参数属性有:

Form:     触发事件的窗口
Sender:   触发事件的控件
DataRow:  正在绘制的数据行
ColName: 正在绘制的列的名称
Style:   用于绘制单元格的样式名称

示例

假定DataList用于显示订单数据,我们希望对于大于5000的金额,用红底蓝字标出,对于大于4000的金额,用蓝底白字标出。

首先在窗口的AfterLoad事件中设置代码,增加两个样式:

Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
dst.AddUserStyle(
"a",Color.Red,Color.Blue)
dst.AddUserStyle(
"b",Color.Blue,Color.White)

然后将DataList的DrawCell事件设为:

If e.ColName = "金额" Then
    Dim Val As Double = e.DataRow("金额")
    if
Val > 5000
Then
        e.Style =
"a"
   
ElseIf Val > 4000 Then
        e.Style=
"b"
   
End If
End
If

如是DataList,也可以看帮助中的"DataList的颜色标记功能"

[此贴子已经被作者于2009-6-10 13:01:00编辑过]

  我在datalist试出来了,但是试了以后我只能做到整张表的所要的数据用颜色显示,我想要效果是在筛选后标出.不是整个表都显示.我做不出来.比如我用这个代码筛选数据:

with e.Form
    if e.sender.text <> "请输入关键字" then
        Dim dst As WinForm.DataList = .Controls("DataList1")
        Dim txb1 As WinForm.TextBox = .Controls("TextBox1")
        dst.RowFilter = "[联系人] Like \'*" & txb1.text & "*\' or [客户编号] Like \'*" & txb1.text & "*\'or [客户名称] Like \'*" & txb1.text & "*\'or [地址] Like \'*" & txb1.text & "*\'"
       

end with


  举了例子,我筛选客户编号为"52033",筛选后"52033"用颜色表示出来.这个代码怎么写?
--  作者:狐狸爸爸
--  发布时间:2009/6/10 14:22:00
--  
其实编程是很简单的,关键是怎么思考问题。

例如你这个问题,应该这么思考:

1、现在可以标记颜色了
2、问题是怎么标记我筛选的值?
3、换个说法,怎么让Drawcell事件知道我筛选的是那个值?
4、哦,这个简单,将筛选的值保存在全局变量中,这样任何事件都可以掉用,包括DrawCell事件。
5、还是不好,都是同一个窗口,也需要用全局变量吗?
6、是的,不需要,直接读取输入的筛选值就行啊,例如DataList的DrawCell事件设为:

Dim Val As String  = e.Form.Controls("输入筛选内容的文本框的名称").Value
If e.ColName = "筛选列" Then
   If e.DataRow("筛选列") =Val
        e.Style = "a"
    End If
End If
--  作者:blackzhu
--  发布时间:2009/6/10 14:41:00
--  
2、问题是怎么标记我筛选的值?
6、是的,不需要,直接读取输入的筛选值就行啊

我就这两个值不知道怎么写?还有你的代码我测试没有用.
--  作者:blackzhu
--  发布时间:2009/6/10 14:42:00
--  
按理有用啊,你的代码我也看得懂,但不起作用,奇怪.
--  作者:狐狸爸爸
--  发布时间:2009/6/10 14:45:00
--  
一定有用的,除非你搞错了列名和样式名。
搞不定的话,就做个例子传上来看看。
[此贴子已经被作者于2009-6-10 14:47:27编辑过]

--  作者:blackzhu
--  发布时间:2009/6/10 15:11:00
--  
以下是引用狐狸爸爸在2009-6-10 14:45:00的发言:
一定有用的,除非你搞错了列名和样式名。
搞不定的话,就做个例子传上来看看。
[此贴子已经被作者于2009-6-10 14:47:27编辑过]

搞定,要回车才行.


--  作者:狐狸爸爸
--  发布时间:2009/6/10 15:15:00
--  
图片点击可在新窗口打开查看