JQgrid:使用cellattr和动态数字列动态设置格式化单元格

时间:2012-09-25 00:05:46

标签: json dynamic jqgrid format cell

我首先需要动态构建网格列,所以我这样做:

success: function(data){
                  var colnames = data.colnames;
                  var colmodel = data.colmodel;
                  $("#list").jqGrid({       
                        ...
                        colNames: colnames,
                        colModel: colmodel,  
                        ...})

在我的PHP文件中,我有:

$colnames[0] = 'ID';
$colnames[1] = 'Name';
$colnames[2] = 'Total';

$colmodel[0] = array("name"=>'ID', "index"=>'libelle', "width"=>50);
$colmodel[1] = array("name"=>'Name',"index"=>'Name', "width"=>50);
$colmodel[2] = array("name"=>'Total', "index"=>'Total', "width"=>50);

$arraydata = array("page"=>"1", 
              "records"=>"1", 
              "total"=>"1", 
              "colnames"=> $colnames,     
              "colmodel"=> $colmodel,         
              "rows"=>$row,
              ...
              );

$jsondata=json_encode($arraydata);  

return $jsondata;

(我不喜欢直接使用json格式,因为它对我来说不太清楚,将php变量放入json格式是困难的。)

Secondely,我需要像字体颜色或背景颜色等动态设置单元格格式,例如,我想在colModel中使用“cellattr”:

$colmodel[2] = array("name"=>'Total', "index"=>'Total', "width"=>50, 
"cellattr"=>"function( rowId, val, rowObject, cm, rdata){ if (val>100) return 'style=\"color: orange\"';}");

但是,我的格子里没有“cellattr”。

在Firebug下,我有:

"colmodel":[{"name":"libelle","cellattr":"function( rowId, val, rowObject, cm, rdata){ return 'style=\"background-color: orange\"';}" 

我想也许我们不能在json中发送函数js,我不知道......有没有人有想法?

由于

1 个答案:

答案 0 :(得分:0)

我在Github找到了固定版本,但我没有对此进行测试。

更改grid.base.j s

中的代码

acp = celp.split("style");

acp = celp.split(/[^-]style/);