[ECSide] FAQ:如何对单元格样式的个性设置:

fins 2007-05-25
对单元格样式的个性设置:

<ec:table items="userList" var="rowBean" ...>
.....
<ec:column style=".." styleClass="...." .../>


这两个属性相当于 html里的 style和  class

====================================
他们支持 jsp脚本
例如
<% String cellColor="red"  %>
....
<ec:column style="color:<%=cellColor %>" ../>


====================================
他们支持"公式语言语法"
例如
<ec:column style="color:${rowBean.cellColor}" ../>

其中  cellColor 为 rowBean的一个属性(如果rowBean为vo的话)或一个key(如果rowBean为map的话)

====================================
style还支持动态脚本语言  (styleClass不支持)
例如
<ec:column style="#_EX:VAR.USERID>5 && VAR.USERID<15?'color:red':'' "  />

其中 VAR是关键字 代表 rowBean


利用以上信息,完全可以控制任意一个单元格的颜色

情景一:
整个列的颜色都变,
那么只要  style="background-color:red" 就可以了

情景二
一列中,根据条件不同,颜色不同,且条件比较简单.
使用脚本语言最合适了

情景三
一列中,根据条件不同,颜色不同,且条件比较复杂.
在准备列表数据的时候 例如查询客户信息的时候, 就把记录的颜色信息查询出来,作为一个属性放到 vo或map里

例如 根据复杂条件来决定用户名的显示颜色.
那么可以给 vo或map加上一个关于颜色的属性,例如 nameColor,然后在准备数据的时候就对nameColor进行赋值.
然后使用
<ec:column style="color:${rowBean.nameColor}" ../> 或者
<ec:column styleClass="${rowBean.nameColor}" ../>

还有一个方法  写一个计算 颜色的工具类,例如
StyleUtil.getNameColor(Object rowBean) ,该类以每条记录对应的vo或map为参数,返回颜色信息

<ec:column style="color:<%= StyleUtil.getNameColor(pageContext.findAttribute("rowBean"))  %>" ../> 

这样也很好, 当然效率直接取决于条件的复杂性 以及 StyleUtil.getNameColor的写法了



以上是目前可行的 对单元格进行定制的方法,不知道能否满足大多数的需求.

如果不可以,麻烦您跟我讲讲您的想法和建议 谢谢
Global site tag (gtag.js) - Google Analytics