2013-09-12 2 views
2

Я использую jqGrid, и я не могу иметь 2 субгриды одновременно, если второй щелкнул, предыдущий должен быть закрыт.jqGrid, показывается только одна подзапись в то время

И я не могу найти событие, чтобы предотвратить это ... мне нужно что-то вроде:

$("#list2").jqGrid({ 
     multiSubGrids: false 
}); 

Может быть, это то, что я не хватает ...

enter image description here

Заранее спасибо!

ответ

2

Отсюда Subgrid/Events:

с subGridRowExpanded: function(subgrid_id, row_id) { ... } вы можете поймать событие.

и

$("#list2 tr:has(.sgexpanded)").each(function() { 
    num = $(this).attr('id'); 
    $(this).collapseSubGridRow(num); 
}); 

вы можете свернуть все расширенные subgridrow.

+0

Разница с предыдущим ответом является то, что я буду уверен, чтобы закрыть 'all' subgrids, которые расширяются с помощью итерации на' each', который имеет класс '.sgexpanded', вместо того, чтобы закрывать только« последний »? – Luis

+0

Да, точно, это единственная разница. –

2

Я нашел этот путь ... это работает, но я не знаю, если его одним из лучшего:

// this will save the rowId of the previous subGrid 
var previousRowId = 0; 

$("#list2").jqGrid({ 
    // all your default mapping here.. 
    ... 
    subGridRowExpanded: function (subgrid_id, row_id) { 
    if (previousRowId != 0) { 
     $(this).collapseSubGridRow(previousRowId); 
    } 
    ... 
    // all your subgrid code here 
    ... 
    // this will save the actual row_id, 
    // so the next time a subgrid is going to be expanded, 
    // it will close the previous one 
    previousRowId = row_id; 
}); 

Надеется, что это помогает кто-то другое!

0

Я попытался решение предложил Луис, и это не сработало

Это один работает как шарм: http://guriddo.net/?topic=how-do-i-only-have-only-1-subgrid-expanded-at-any-time/#post-115123

subGridBeforeExpand: function(divid, rowid) { 
    // #grid is the id of the grid 
    var expanded = jQuery("td.sgexpanded", "#grid")[0]; 
    if(expanded) { 
    setTimeout(function(){ 
     $(expanded).trigger("click"); 
    }, 100); 
    } 
},