0

上記のコードattrSettingで呼び出されます。に変更すると{"name":"A", "index":"0", "cellattr":attrSetting}。それはうまくいきます。それで、私は何をすべきですか?cellattr は、関数としてではなく文字列として扱います。

var gridData = {"list":[{"A":"abc", "B":"def", "C":"IRIS", "D":"Testing","E":"17-12-                 2012","F":"Test", "attr":{"A":{"rowspan": 3}}},{"A":"abc", "B":"def", "C":"IRIS", "D":"Testing","E":"17-12-2012","F":"Test", "attr":{"A":{"display":"none"}}},{"A":"abc", "B":"def", "C":"IRIS", "D":"Testing","E":"17-12-2012","F":"Test", "attr":{"A":{"display":"none"}}}]};
$(document).ready(function(){
prepareGrid();
});
prepareGrid = function(colModel) {
$("#grid").jqGrid({
    datatype    :   'local',
    contentType :   'application/json',
    data        :   gridData.list,
    loadtext    :   "Loading...",
    colNames    :   ['TB Element','GL Element', 'Company Name', 'Status', 'Date', 'User'],
    colModel    :   [
                     {"name":"A", "index":"0", "cellattr":"attrSetting" },
                     {name:"B", index:1 },
                     {name:"C", index:2},
                     {name:"D", index:3},
                     {name:"E", index:4},
                     {name:"F", index:5}
                    ],
    width       :   '500px',
    height      :   '200px',
    rownumWidth :   30,
    scrollrows  :   true,
    shrinkToFit :   false,
    rownumbers  :   true,
    viewrecords :   true,
});
};
function attrSetting(rowId, val, rawObject, cm) {
   var attr = rawObject.attr[cm.name], result;
   if (attr.rowspan) {
      result = ' rowspan=' + '"' + attr.rowspan + '"';
   } else if (attr.display) {
      result = ' style="display:' + attr.display + '"';
   }
   return result;
};
4

1 に答える 1

0

変えればいいだけ

"cellattr":"attrSetting"

"cellattr": attrSetting

さらに、jqGrid オプションの使用には注意が必要です。現在のコードには多くのバグが含まれています。ほんの一例:

  • 使用するdatatype: "local"場合は、プロパティを削除する か、プロパティの値とまったく同じ値を使用する必要があります。ルールに従わない場合、グリッド列を並べ替えることができず、ローカル データの検索/フィルタリングも機能しません。indexcolModelname
  • pagerまたはtoppagerjqGridのオプションを使用しません。rowNumその場合、 のような十分に大きな値でオプションを指定することを強くお勧めしますrowNum: 10000。のデフォルト値は 20 です (オプションrowNumの表の「デフォルト」列を参照)。したがって、jqGrid は、指定した配列から最初の 20 行だけを表示します。gridData.list
  • との値はwidth、 とのような文字列ではなく、またはのような数値heightでなければなりません。の値は文字列または.500200'500px''200px'height"auto""%100"
  • contentTypeオプションはありません。
  • gridview: trueとオプションを併用することをお勧めしautoencode: trueます。
于 2013-06-26T16:32:43.577 に答える