3

loadonce:true オプションを使用して大量の行 (1000 秒単位) を jqgrid にロードします。jqgrid がロードされた後、ユーザーはローカルでデータを操作します。また、列の1つに条件付き書式があり、次のようなものがあります

 cellattr: function(rowId, cellValue, rawObject, cm, rdata) {
     if (rawObject[0]=='Stale'){
    return ' class="stale-highlight"';
     } else if (rawObject[0]=='Not Stale') {
    return ' class="notstale-highlight"';
     } 
 }

ユーザーが並べ替え、フィルターなどを行うとすぐに条件付き書式が失われることを除いて、正常に機能します。

これは、グリッドがロードされた後にデータ型をローカルに変更する loadonce オプションに関連している可能性があることはわかっています。ユーザーが servrr をポーリングせずにデータを操作できるようにするにはどうすればよいですか?

ありがとうキャスビー

**

アップデート:

**

問題が見つかりました。うまくいけば、他の人にも役立つでしょう。

データ サイズを減らすために、次の json 形式を使用します。

{"rows":[{"id":"1","cell":["Not Stale","xxxx","2012-10-16 14:20:59",
                           "110517853","10797445","2012-10-17 08:29:51",
                           "xxxx","2012-10-17 08:33:02", "xxxx",
                           "105954724","xxxxxx","11111.0000",
                           "10000000.0000","10000000.0000"]}]
 ,"page":1,"total":1,"records":"2"} 

3 つは、json に表示される列名ではありません。したがって、最初にグリッドがロードされるとき、cellattr で使用される rawObject パラメータは値の配列です (列に対応)。グリッドがロードされた後、rawObject はオブジェクトになりました。column_name:column_value のペアが含まれています。

したがって、私の元のコードは、最初のグリッド ロード中にのみ機能します。

cellattr: function(rowId, cellValue, rawObject, cm, rdata) {
     if (rawObject[0]=='Stale'){
      return ' class="stale-highlight"';
      } else if (rawObject[0]=='Not Stale') {
       return ' class="notstale-highlight"';
   } 
}

この問題を解決するには、次の 2 つのオプションがあります。

use the column_name:column_value pairs in the json object and change the cellattr code to reference the rawObject.column_name.

また

add extra logic to check rawObject.column_name in the cellattr function. it may be less efficient programmingwise but sometime changing input is not that easy

    cellattr: function(rowId, cellValue, rawObject, cm, rdata) 
    { if   (rawObject[0]=='Stale' || rawObject.column_name=='Stale')
       { return ' class="stale-highlight"'; } 
     else if (rawObject[0]=='Not Stale' || rawObject.column_name=='Not Stale') 
       { return ' class="notstale-highlight"'; }

ありがとうキャスビー

4

0 に答える 0