1

grouping:true で jqGrid を作成したいのですが、最初のグループのみが展開され、このグループを展開すると別のグループが折りたたまれたままになり、折りたたまれていたため、サーバーからデータをロードする必要があります。

誰かがそれに対する解決策を持っていますか?

PS:グループ化を使用する必要があります。ユーザーが別の列を選択してその場でグループ化できるのはなぜですか。

4

2 に答える 2

3

要件を実装する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');groupFieldnewは、グリッド本体の次の塗りつぶし後にのみ使用されることを理解する必要があります。したがって、サーバー上でグループ化順序を定義し、それをサーバー応答に含めたい場合は、内ではなく 内でgroupingGroupByメソッドを呼び出す必要があります。beforeProcessingloadComplete

于 2011-11-21T09:58:02.147 に答える
1

データ型を設定します:'local'

それから

$( "#list")。setGridParam({datatype:'json'})。trigger('reloadGrid'、[{page:1}]);

于 2012-01-09T16:18:55.663 に答える