以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  用户样式在QueryBuilder临时表中设定无效  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=108430)

--  作者:zhutangxin
--  发布时间:2017/10/23 1:06:00
--  用户样式在QueryBuilder临时表中设定无效
老师,你好。
我想用在窗口表中自定义样式。除了建立临时表的方式不一样,其它代码都一样,一种能显示用户样式,一种不能。具体情况如下:
1. 不能显示的窗口用的是querybuilder建的临时表

test_无颜色_Table1_DrawCell 

If e.Col.Name = "moplanQty" Then

    If e.Row("moplanQty") >= 10000 Then

        e.Style = "b"

    End If

End If

\'用代码建立查询表

 Dim q As new QueryBuilder

    q.C

    q.TableName = "v_mo"

    q.SelectString = "sele ct * f rom v_mo"

    q.Build



2. 能显示的窗口用的是cmd.ExecuteReader()建的临时表

test_有颜色_Table1_DrawCell 

If e.Col.Name = "moplanQty" Then

    If e.Row("moplanQty") >= 10000 Then

        e.Style = "b"

    End If

End If

\'用代码建立查询表

Dim dt1 As DataTable

cmd.C

cmd.CommandText = frmsqlstr

dt1=cmd.ExecuteReader()


具体见附件。麻烦指点一下。


--  作者:zhutangxin
--  发布时间:2017/10/23 1:07:00
--  
刚才附件上传不了,补发一下
--  作者:zhutangxin
--  发布时间:2017/10/23 1:14:00
--  
图片点击可在新窗口打开查看传不上附件,上传二个图片
--  作者:zhutangxin
--  发布时间:2017/10/23 1:15:00
--  
搞不懂,看不到附件
--  作者:有点甜
--  发布时间:2017/10/23 8:47:00
--  

如果是窗口表,你为什么不直接fill进来?参考 http://www.foxtable.com/webhelp/scr/1777.htm

 

如果用querybuilder,你需要编写的是全局表事件 http://www.foxtable.com/webhelp/scr/0671.htm

 


--  作者:zhutangxin
--  发布时间:2017/10/23 9:36:00
--  

谢谢及时回复。没有用Fill方式是因为帮助里说:

重要提示

其实Fill并不常用,只有需要从不同的表中加载数据时,才使用Fill语句,从同一个表中动态加载数据,应该使用LoadFilter和Load来实现。


现在项目里已经用querybuilder写了,全局表事件怎么写?
项目的要求是:
1. 项目中有多个窗口,每个窗口都有用querybuilder动态分页加载的表
2. 有些表需要按客户要求对某些字段,将符合条件的单元格标识相应的样式。如订单数量>10000的用红底白字,1000-9999的用黄色,<1000的用绿色。但不同的窗口表加载的业务数据不一样,应用样式的条件了也不一样。

谢谢!


--  作者:有点甜
--  发布时间:2017/10/23 9:52:00
--  

全局表 drawcell 事件

 

If e.Table.Name = "表A" Then

 

ElseIf e.Table.name = "窗口1_Table1" Then

    e.Table.AddUserStyle("a", Color.Red, Color.White)

    e.Style = "a"

End If


--  作者:zhutangxin
--  发布时间:2017/10/23 10:23:00
--  
在全局表drawcell事件中写了下面的代码:
If e.Table.Name = "v_mo" Then
    If e.Col.Name = "moPlanQty"  Then   e.Style = "a"
ElseIf e.Table.name = "test_无颜色_Table1" Then
    e.Table.AddUserStyle("a", Color.Red, Color.White)
    If e.Col.Name = "moPlanQty"  Then  e.Style = "a"
End If

但会有下面的报错
---------------------------
错误
---------------------------
编译错误:“AddUserStyle”不是“Table”的成员。

错误代码:e.Table.AddUserStyle("a", Color.Red, Color.White)
---------------------------
确定  
---------------------------

把代码改成下面,则无报错, 但依然没有显示颜色
If e.Table.Name = "v_mo" Then
    If e.Col.Name = "moPlanQty"  Then   e.Style = "a"
ElseIf e.Table.name = "test_无颜色_Table1" Then
    e.Table.DataTable.AddUserStyle("a", Color.Red, Color.White)
    If e.Col.Name = "moPlanQty"  Then  e.Style = "a"
End If


--  作者:有点甜
--  发布时间:2017/10/23 11:13:00
--  

全局代码你要开启一下的。你build出对应的表后,执行

 

DataTables("v_mo").GlobalHandler.DrawCell = true


--  作者:zhutangxin
--  发布时间:2017/10/23 19:23:00
--  
好了,谢谢!