得到的数据是这样的数组:
[["a1","b1","c1"],
["a2","b2","c2"],
..........]我想让表格中这样显示:
a1 | b1 | c1 | a1+b1 | a1+c1 |
a2 | b2 | c2 | a2+b2 | a2+c2 |
并且当a>b时,该行显示为红色,a<b时显示为绿色。同时这个表格中的数据是动态的,颜色可能每隔一段时间就要改变一次。现在最重要的两点解决不了( -___- )b..
1 是如何让显示的数据和store中的不一样?比如后面的 a+b
2 是如何动态地改变整行的颜色呢?
[["a1","b1","c1"],
["a2","b2","c2"],
..........]我想让表格中这样显示:
a1 | b1 | c1 | a1+b1 | a1+c1 |
a2 | b2 | c2 | a2+b2 | a2+c2 |
并且当a>b时,该行显示为红色,a<b时显示为绿色。同时这个表格中的数据是动态的,颜色可能每隔一段时间就要改变一次。现在最重要的两点解决不了( -___- )b..
1 是如何让显示的数据和store中的不一样?比如后面的 a+b
2 是如何动态地改变整行的颜色呢?
先让"a+b","a+c"的位置为空,然后在store.on('load',function(){})中遍历所有数组,通过store.getAt(行号).get('a")来获取值,最后set回去Q_Q 但是这样好慢啊...
你可以在后台格式化成json的时候 自动加上a+b:value,a+c: value2
这样不就好了吗。
字体颜色 可能在要改变的那个字段{render:function(value){
if(value<0){
return '<font color=red>'+value+'</font>'
}
return value;
}}
2. 覆盖gridView的getRowClass方法,参考 api->gridview->getRowClass
我根据5楼aj的思想写出如下代码,在ff,ie,chrome上测试通过了<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<!--ext start- 下面三个文件的路径换成你自己的路径 -->
<link rel="stylesheet" type="text/css" href="/ext/resources/css/ext-all.css" />
<script type="text/javascript" src="/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="/ext/ext-all.js"></script>
<!--ext end-->
<script type="text/javascript">
Ext.onReady(function(){
var myData = [
['2','3','4'],
['5','6','7'],
['5','3','6']
]; var store = new Ext.data.ArrayStore({
fields: [
{name: 'a', type:'int'},
{name: 'b', type: 'int'},
{name: 'c', type: 'int'}
]
}); store.loadData(myData);
// change color
function changeColor(val){
var flag=(arguments[2].get('a')-0)-(arguments[2].get('b')-0);
if(flag>0){
return "<span style='color:red'>"+val+"</span>";
}
else if(flag<0){
return "<span style='color:green'>"+val+"</span>";
}
else
return val;
} // create the Grid
var grid = new Ext.grid.GridPanel({
store: store,
columns: [
{
header:'A',
dataIndex:'a',
renderer:changeColor
},
{
header:'B',
dataIndex:'b',
renderer:changeColor
},
{
header:'C',
dataIndex:'b',
renderer:changeColor
},
{
header:'A+B',
renderer:function(){
var val=(arguments[2].get('a')-0)+(arguments[2].get('b')-0);
var flag=(arguments[2].get('a')-0)-(arguments[2].get('b')-0);
if(flag>0){
return "<span style='color:red'>"+val+"</span>";
}
else if(flag<0){
return "<span style='color:green'>"+val+"</span>";
}
else return val;
}
},
{
header:'A+C',
renderer:function(){
var val=(arguments[2].get('a')-0)+(arguments[2].get('c')-0);
var flag=(arguments[2].get('a')-0)-(arguments[2].get('b')-0);
if(flag>0){
return "<span style='color:red'>"+val+"</span>";
}
else if(flag<0){
return "<span style='color:green'>"+val+"</span>";
}
else return val;
}
}
],
stripeRows: true,
height: 350,
width: 600,
title: 'TEST Grid'
}); // render the grid to the specified div in the page
grid.render(Ext.getBody());
});
</script></head>
<body>
</body>
</html>