2

特定の行をグループ化するJQGridがあります。私はgroupどの行をグループ化するかを定義するために使用します。たとえば、3つある場合、2すべて2の行をグループ化します。ただし、1つしかない可能性もあります2。その場合は、グループ化したくありません。つまり、グループの下に行を配置します。

私の質問は、グループ化を特定の行にのみ適用し、他の行をそのままにしておくことは可能ですか?

以下は私が現在持っているものです:

colNames:['group', 'Description', 'File Sent to Customer', 'Date/Time', 'ATS', '# of Bib Records', '# of Items', 'Customer DB', 'Customer ID'],
    colModel:[
        {name:'group', index:'group'},
        {name:'description', index:'description'},
        {name:'fileSent', index:'fileSent', width:150},
        {name:'date', index:'date', width:160},
        {name:'ats', index:'ats', width:100},
        {name:'bibRecords', index:'bibRecords', width:100},
        {name:'items', index:'items', width:100},
        {name:'customerDB', index:'customerDB', width:240},
        {name:'customerID', index:'customerID', width:150}
    ],
    grouping:true,
    groupingView : {
        groupField : ['group'],
        groupColumnShow : [false],
        groupText : [''],
        groupCollapse : true,
        groupOrder: ['desc']
    },
4

1 に答える 1

2

あなたの質問は面白いと思います。そこで、標準のグループ化の代わりに表示するソリューションを作成しました(開始デモを参照)

ここに画像の説明を入力してください

以下:

ここに画像の説明を入力してください

対応するコードはそれほど複雑ではありません。

loadComplete: function () {
    var i, groups = $(this).jqGrid("getGridParam", "groupingView").groups,
        l = groups.length,
        idSelectorPrefix = "#" + this.id + "ghead_0_";
    for (i = 0; i < l; i++) {
        if (groups[i].cnt === 1) {
            // hide the grouping row
            $(idSelectorPrefix + i).hide();
        }
    }
}

1レベルのグループ化を使用しますが、マルチレベルのグループ化と同じ方法で変更できます。

結果のグリッドに関する1つの警告:グリッドの並べ替えには注意する必要があります。問題は、jqGridがグループ内の行のみをソートすることです。したがって、グループ化ヘッダーが非表示になっている上記の行は、並べ替えプロセスから外れているようです。

于 2012-12-05T20:25:31.987 に答える