Скрыть символ "Развернуть / Свернуть" или деактивировать спец. строки в подсетке 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, какие строки не должны иметь подсеток.

Другие вопросы по тегам