Отключить расширение подсетки для выбранных строк jqGrid

Проблема: jqGrid с подсетками. Я хочу отключить функцию развертывания/свертывания для некоторых строк основной сетки.


person Ankit Khanal    schedule 27.05.2010    source источник


Ответы (4)


Я действительно нашел способ:

grid.jqGrid('setGridParam',{
                afterInsertRow: function(rowid, aData, rowelem) {

                    var rowData = grid.getRowData(rowid);
                    if(**Condition**){
                        $('tr#'+rowid, grid)
                         .children("td.sgcollapsed")
                         .html("")
                         .removeClass('ui-sgcollapsed sgcollapsed');
                    }
                }
            });

Была небольшая проблема. Код @Frank удалил значок, но событие «щелчок» по-прежнему срабатывало. Попытка отвязать событие "щелчок" не работает, вероятно, потому, что оно было присоединено позже (возможно, в gridComplete). Во всяком случае, я понял, что событие щелчка прикрепляется с помощью одного из классов 'ui-sgcollapsed sgcollapsed', поэтому, если вы удалите их, событие не будет прикреплено.

Надеюсь, поможет.

person Madalin Stefirca    schedule 15.09.2011

Добавьте это в gridConfig

afterInsertRow: function(rowid, aData, rowelem) {
    // Remove the subgrid plus button except for rows that have exceptions
    if (CONDITION) {
        $('#' + rowid).children("td.sgcollapsed").unbind().html("");
    }
},
person Frank    schedule 22.06.2010
comment
Как упоминает Мадалин, это удаляет только значок. Пользователи по-прежнему могут нажать на него, что означает, что функциональность все еще существует. - person Joseph; 29.05.2014

К сожалению, для этого нет jqGrid API. Вам придется подождать, пока сетка будет создана, а затем, возможно, из-за события loadComplete, вам нужно будет вручную перебрать все строки и отключить выбранные.

Если вы проверите элементы DOM, составляющие сетку, вы, вероятно, сможете найти способ удалить/отключить расширитель для выбранных строк. Возможно, с помощью jQuery.remove.

person Justin Ethier    schedule 27.05.2010

Если вы пытаетесь отключить или скрыть кнопку развертывания и свертывания подсеток, используйте ее при завершении загрузки,

jQuery("#GridTeableID").jqGrid('hideCol', "subgrid");
person PUBG    schedule 19.11.2013