2

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

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 格式。)

其次,我需要动态设置单元格格式,如字体颜色或背景颜色等......例如,我想在 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,我不知道......有人有想法吗?

谢谢

4

1 回答 1

0

我在 Github 中找到了修复,但我没有测试这个修复。

修改grid.base.js中的代码

acp = celp.split("style");

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

于 2013-05-13T10:31:10.913 回答