Проблема: jqGrid с подсетками. Я хочу отключить функцию развертывания/свертывания для некоторых строк основной сетки.
Отключить расширение подсетки для выбранных строк jqGrid
Ответы (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', поэтому, если вы удалите их, событие не будет прикреплено.
Надеюсь, поможет.
Добавьте это в 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("");
}
},
К сожалению, для этого нет jqGrid API. Вам придется подождать, пока сетка будет создана, а затем, возможно, из-за события loadComplete
, вам нужно будет вручную перебрать все строки и отключить выбранные.
Если вы проверите элементы DOM, составляющие сетку, вы, вероятно, сможете найти способ удалить/отключить расширитель для выбранных строк. Возможно, с помощью jQuery.remove.
Если вы пытаетесь отключить или скрыть кнопку развертывания и свертывания подсеток, используйте ее при завершении загрузки,
jQuery("#GridTeableID").jqGrid('hideCol', "subgrid");