あなたの質問は面白いです。だから+1。私はあなたの要件を実装する方法を示すデモを作成しました。
実装の主な考え方はthe answerと同じです。拡張グループの状態を配列expandedGroups
に保持することをお勧めします。私はonClickGroup
コールバックをjqGrid 4.0.0で追加しました(here参照)。 loadComplete
コールバックの中で、配列expandedGroups
からすべての項目を展開しようとしました。
利点は、ページング、ソート、およびフィルタ処理中に展開状態が消えないことです。
デモはhereです。デモからコードで下記
var $grid = $("#list"), expandedGroups = [];
$grid.jqGrid({
// ... some jqGrid parameters
grouping: true,
groupingView: {
groupField: ['name'],
groupCollapse: true,
groupDataSorted: true
},
onClickGroup: function (hid, collapsed) {
var idPrefix = this.id + "ghead_", id, groupItem, i;
if (hid.length > idPrefix.length && hid.substr(0, idPrefix.length) === idPrefix) {
id = hid.substr(idPrefix.length);
groupItem = this.p.groupingView.sortnames[0][id];
if (typeof (groupItem) !== "undefined") {
i = $.inArray(expandedGroups[i], groups);
if (!collapsed && i < 0) {
expandedGroups.push(groupItem);
} else if (collapsed && i >= 0) {
expandedGroups.splice(i, 1); // remove groupItem from the list
}
}
}
},
loadComplete: function() {
var $this = $(this), i, l, index, groups = this.p.groupingView.sortnames[0];
for (i = 0, l = expandedGroups.length; i < l; i++) {
index = groups.indexOf(expandedGroups[i]);
if (i >= 0) {
$this.jqGrid('groupingToggle', this.id + 'ghead_' + index);
}
}
}
});
$grid.jqGrid('navGrid', '#pager', {add: false, edit: false, del: false}, {}, {}, {},
{multipleSearch: true, multipleGroup: true, closeOnEscape: true, showQuery: true,
closeAfterSearch: true});
が更新:jqGridのグループ化モジュールは、私のオリジナルの答え以来、多くの部分で変更されています。修正されたデモはhereです。コードの最も重要な部分は、1つの外側のスコープで定義され
grouping: true,
groupingView: {
groupField: ["invdate"],
groupCollapse: true,
groupDataSorted: true
},
onClickGroup: function (hid, collapsed) {
var idPrefix = this.id + "ghead_", i, groupid,
$this = $(this),
groups = $(this).jqGrid("getGridParam", "groupingView").groups,
l = groups.length;
if (!inOnClickGroup) {
inOnClickGroup = true; // set to skip recursion
for (i = 0; i < l; i++) {
groupid = idPrefix + groups[i].idx + "_" + i;
if (groupid !== hid) {
$this.jqGrid("groupingToggle", groupid);
}
}
inOnClickGroup = false;
}
}
可変inOnClickGroup
下に見ることができました。
ありがとうございました、これは少し時間がかかりましたが、私の経験はこのコアからは限られています。非常にストレートですが、誰もが専門家を活用すると、コミュニティを支援します。私の時間を節約してくれてありがとう、私は同じように他の人を助けることを願っています。 –
@ D-S:ようこそ! – Oleg
偉大な質問と素晴らしい答え! – FastTrack