Sorunuzu ilginç buluyorum. Yani benden +1. Gereksinimlerinizi nasıl uygulayacağınızı gösteren bir demo yaptım.
Uygulamanın ana fikri, the answer ile aynıdır. Ben sadece genişletilmiş grupların durumunu expandedGroups
dizisinde tutmanızı öneriyorum. JqGrid 4.0.0'da onClickGroup
geri arama özelliğini kullanıyorum (bkz. here). loadComplete
geri arama içinde expandedGroups
dizisinden tüm öğeleri genişletmeye çalışıyorum.
Uygulamanın avantajı, genişletilmiş durumun sayfalama, sıralama ve filtreleme sırasında kaybolmamasıdır.
Demoyu here görebilirsiniz. demo dan kodunda Aşağıda:
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});
GÜNCELLEME: jqGrid gruplandırılması modülü orijinal cevap beri birçok yerinde değiştirilir. Modifiye demo bir here bulabilirsiniz. kod en önemli kısmı bir dış kapsamında tanımlanan
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;
}
}
değişken inOnClickGroup
aşağıda Kullanılan.
Çok teşekkür ederim, Bunu çalışmak biraz zaman alacaktı, ama tecrübem bu çekirdekten sınırlı. Çok basit, ama herkes orada uzmanlıklardan yararlanırsa, topluluğa yardım eder. Zamanımı kurtardığın için teşekkürler, aynı şekilde başkalarına yardım etmeyi umuyorum. –
@ D-S: Rica ederim! – Oleg
Harika bir soru ve harika cevap! – FastTrack