jqGridを使用していて、グリッドの1つにグループ化を追加しました。グループ化が有効になっていない場合はすべて正常に機能しましたが、追加すると次のようになります。
grouping: true,
groupingView: { groupField: ['ProjName'], groupDataSorted: true }
私は奇妙な行動に出くわし始めました。列ヘッダーの1つをクリックして並べ替え順序を変更すると、グリッド内の既存の行をクリアする代わりに、新しい行がグリッドの最後に追加され、すべてのグループが複製されます。
言い換えれば、ページが最初に描画されるとき、私はこれを見ます:
次に、並べ替えヘッダーをクリックすると、次のようになります。
私の初期化コードは次のとおりです。
var gridMyTasks = $('#gridMyTasks').jqGrid({
jsonReader: { root: 'rows', repeatitems: false, id: 'ID' },
datatype: 'json',
colNames: ['Task ID', 'Task Name', 'Project Name', 'Task Stage', 'Doc Type', 'Due Date'],
colModel: [
{ name: 'ShortCode', width: 70, jsonmap: 'ShortCode' },
{ name: 'TaskName', width: 200, jsonmap: 'TaskName', formatter: 'fmtTaskName' },
{ name: 'ProjName', width: 200, jsonmap: 'ProjName', formatter: 'fmtName' },
{ name: 'TaskStage', width: 100, jsonmap: 'TaskStage' },
{ name: 'DocType', width: 130, jsonmap: 'DocType' },
{ name: 'DueDate', width: 70, jsonmap: 'DueDate' }
],
rowNum: 0,
height: 'auto',
autowidth: true,
forceFit: true,
multiselect: false,
caption: '',
altclass: 'zebra',
altRows: true,
hoverrows: false,
gridview: true,
grouping: true,
groupingView: { groupField: ['ProjName'], groupDataSorted: true }
});
私のローダーコード(ソート時に再度呼び出されます)は次のようになります。
loader(limit, curSort, curDir, function (results) {
grid[0].addJSONData({ rows: results });
$('body').hideLoading();
link.html(expanded ? 'Show less...' : 'Show all...');
},
null);
(loader
サーバーへのAJAX呼び出しです)-既存のすべての行をクリアするために何かをする必要があるのではないかと考えていますか?しかし、グループ化を有効にする前に、なぜそれが完全に正常に機能したのですか?