Скрыть символ «Развернуть / Свернуть» или деактивировать спец.строки в подсетке jqGrid - PullRequest
5 голосов
/ 26 декабря 2010

У меня есть сетка с подсетью: только подсеть first основной сетки должна иметь подсетку.

Решения, которые я нашел в Google и http://www.trirand.com/....i:subgrid&s[]=hidecol не работает.

Есть ли быстрое и грязное (жестко закодированное) решение?

1 Ответ

14 голосов
/ 27 декабря 2010

Скрытие столбца «Подсетка» с помощью jQuery("#grid_id").hideCol('subgrid'); удалить полный столбец, который можно использовать для раскрытия или свертывания подсетки, поэтому вы не можете использовать способ в вашем случае.

Я предлагаю вам очистить содержимоестолбца 'subgrid' и отсоедините событие 'click' для ячеек внутри loadComplete дескриптор события:

loadComplete: function() {
    $("td.sgcollapsed:not(:first)","#list").unbind('click').html('');
}

вы получите следующие результаты: alt text (Вы можетесм. соответствующий пример в прямом эфире здесь ).Важно понимать, что событие 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.Если вам нужно отключить подсеть для всех строк, идентификатор которых не равен rowid, вы можете сделать что-то вроде следующего:

$('td.sgcollapsed:not("#'+rowid+' td.sgcollapsed")',grid[0]).unbind('click').html('');

(см. Live здесь )

ОБНОВЛЕНО : бесплатно jqGrid теперь есть новая функция, описанная в ответ : hasSubgrid обратный вызов, который можно указать в subGridOptions.Это позволяет сообщать jqGrid, какие строки не должны иметь подсеток.

...