2

サーバーへのクエリを 1 つだけにするために、 loadOnce:trueでグリッドを使用しています。データはサーバー側で並べ替えられます (複数列の並べ替え)。クライアント側では並べ替えが無効になっています。

グループ化機能を有効にする前は、ナビゲーションは正しく機能していました。

グループ化機能を有効にすることで、1ページ目はOK。しかし、ナビゲーション ボタンで次のページに移動すると、データはグループ化列に従ってクライアント側で並べ替えられます ( groupDataSorted:trueを使用しても)。

rowTotal: 10000,
gridview: true,
scroll: false, 
loadonce: true,

pgbuttons: true,
pginput: true,
rowNum: 100,
rowList: '',
datatype: 'json',
mtype: 'GET',

grouping: true,
groupingView : { 
      groupField : ['prodNo'],
      groupSummary: [true],
      groupColumnShow: [false],           
      groupText: ['({1})'],
      showSummaryOnHide: true,
      groupDataSorted : true,
      groupCollapse: false
    },
jsonReader: {root: 'list', userdata : 'list'},
url:'...'

私のケースは少し特殊です。サーバー側で「name」列と「date」列に従ってデータをソートしているが、別の「prodNo」列に従って行をグループ化しているためです。ただし、ページ ナビゲーションで並べ替えが行われる理由がわかりません。

ページ ナビゲーションでこのクライアント側の並べ替えを無効にする方法はありますか?

前もって感謝します

4

1 に答える 1

4

を使用loadonce: trueし、ユーザーが [次のページ] ボタンをクリックすると、ローカルデータが並べ替えられます(これは、グループ化に使用する列のプロパティのgrindexes値です)。したがって、この問題を解決する最も簡単な方法は、列にカスタムの並べ替えを実装することです。indexgroupFieldprodNo

最初に「prodNo」列の定義にカスタムソートを追加してみてください

sorttype: function () {
    return 1; // any constant value
}

この関数sorttypeは、ローカル データの並べ替え中に呼び出されます。上記の例のように同じ結果が返された場合、すべてのデータは同じものとして解釈され、追加の並べ替えが行われないことを願っています。

何らかの理由でアプローチが機能しない場合は、別の並べ替えを実装できます

sorttype: function (cellValus, rowData) {
    ...
}

たとえば、ローカル データを他の列 'name' および 'date' に基づいて並べ替えたい場合はsorttype、'prodNo' 列から次のような値を返すことができます。

sorttype: function (cellValus, rowData) {
    // probably the data need be converted in the sortable form yyyy-mm-dd
    return rowData.name + '_' + rowData.data;
}
于 2012-06-11T10:10:29.633 に答える