Скрыть символ "Развернуть / Свернуть" или деактивировать спец. строки в подсетке jqGrid
У меня есть сетка с подсеткой: только первая строка основной сетки должна иметь подсетку.
Решения, которые я нашел в Google и http://www.trirand.com/jqgridwiki/doku.php?id=wiki%3Asubgrid&s%5B%5D=hidecol, не работают.
Есть ли быстрое и грязное (жестко закодированное) решение?
1 ответ
Скрытие столбца "Подсетка" с jQuery("#grid_id").hideCol('subgrid');
удалите полный столбец, который можно использовать, чтобы развернуть или свернуть подсетку, чтобы вы не могли использовать способ в вашем случае.
Я предлагаю вам очистить содержимое столбца 'subgrid' и отменить привязку события 'click' для ячеек внутри дескриптора события loadComplete:
loadComplete: function() {
$("td.sgcollapsed:not(:first)","#list").unbind('click').html('');
}
у вас будут следующие результаты: (Вы можете увидеть соответствующий пример в прямом эфире здесь). Важно понимать, что событие loadComplete будет вызываться на любой странице, поэтому на второй странице у вас будет subrgid также только в первой строке.
Если вам нужно реализовать более сложную логику при выборе строк, которые должны иметь подсетки, вы можете использовать следующий код
loadComplete: function() {
var grid = $("#list");
var subGridCells = $("td.sgcollapsed",grid[0]);
$.each(subGridCells,function(i,value){
if (i!==0) {
$(value).unbind('click').html('');
}
});
}
Код выше делает то же самое, что и заявление $("td.sgcollapsed:not(:first)","#list").unbind('click').html('')
, но вы можете легко изменить последнюю версию кода, чтобы реализовать более сложное поведение.
ОБНОВЛЕНО: Если вам нужна детализированная подсетка только для некоторой строки, обозначенной rowid
ты можешь использовать
$("#"+rowid+" td.sgcollapsed",grid[0]).unbind('click').html('');
(см. в прямом эфире здесь) внутри loadComplete
, Если вам нужно отключить подсеть для всех строк, id которых не равен rowid
Вы можете сделать что-то вроде следующего
$('td.sgcollapsed:not("#'+rowid+' td.sgcollapsed")',grid[0]).unbind('click').html('');
(смотрите в прямом эфире здесь)
ОБНОВЛЕНО: в бесплатной jqGrid появилась новая функция, описанная в ответе: hasSubgrid
обратный вызов, который может быть указан в subGridOptions
, Это позволяет сообщить jqGrid, какие строки не должны иметь подсеток.