2

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呼び出しです)-既存のすべての行をクリアするために何かをする必要があるのではないかと考えていますか?しかし、グループ化を有効にする前に、なぜそれが完全に正常に機能したのですか?

4

1 に答える 1

0

私はそれを考え出した。私は次のコードを持っていました:

grid.setGridParam({
    onSortCol: function (index, iCol, sortorder) {
        wait();
        curSort = index;
        curDir = (sortorder == 'desc');
        loadGrid(expanded ? null : 15);
        return 'stop'; // <--- Problem
    }
});

コメントアウトするreturn 'stop'と、問題は解決しました。そもそもなぜこれがあったのか完全にはわかりません。組み込みの並べ替えを無効にしようとしていたと思います。

于 2012-10-17T20:09:19.327 に答える