grouping:true で jqGrid を作成したいのですが、最初のグループのみが展開され、このグループを展開すると別のグループが折りたたまれたままになり、折りたたまれていたため、サーバーからデータをロードする必要があります。
誰かがそれに対する解決策を持っていますか?
PS:グループ化を使用する必要があります。ユーザーが別の列を選択してその場でグループ化できるのはなぜですか。
要件を実装するgroupCollapse: true
には、すべてのグループを折りたたみ形式で表示する必要があります。たとえば、
grouping: true,
groupingView: {
groupField: ['invdate'],
groupCollapse: true,
groupDataSorted: true
}
グリッドがいっぱいになった後、groupingToggleに関して最初のグループを展開します。たとえば、 内で次のコードを使用できますloadComplete
。
loadComplete: function () {
var $this = $(this), firstGroup = $this.find('tr.jqgroup:first');
if (firstGroup.length > 0) {
$this.jqGrid('groupingToggle', firstGroup[0].id);
}
}
グリッドのグループ化行の ID がどのように構築されるかを思い出せば、コードを次のように減らすことができます。
loadComplete: function () {
$(this).jqGrid('groupingToggle', this.id + 'ghead_0');
}
デモを参照してください。
グループ化に使用される列をオンザフライで変更するには、次のgroupingGroupBy
メソッドを使用できます。
$("#list").jqGrid('groupingGroupBy', columnName);
たとえば$("#list").jqGrid('groupingGroupBy', 'ship_via');
。groupField
newは、グリッド本体の次の塗りつぶし後にのみ使用されることを理解する必要があります。したがって、サーバー上でグループ化順序を定義し、それをサーバー応答に含めたい場合は、内ではなく 内でgroupingGroupBy
メソッドを呼び出す必要があります。beforeProcessing
loadComplete
データ型を設定します:'local'
それから
$( "#list")。setGridParam({datatype:'json'})。trigger('reloadGrid'、[{page:1}]);