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形式を直接使用するのは好きではありません.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 に答える