2010-05-27 21 views

Respuesta

5

realidad me encontré una manera:

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'); 
        } 
       } 
      }); 

Hubo un poco de un problema. El código @Frank eliminó el ícono, pero el evento 'clic' aún se activó. Intentar desvincular el evento 'clic' no parece funcionar, probablemente porque está conectado más tarde (tal vez en gridComplete). De todos modos, calculé que el evento click se adjunta utilizando una de las clases 'ui-sgcollappsed sgcollapps', por lo que si las elimina, el evento no se adjuntará.

Espero que ayude.

0

Lamentablemente, no existe la API jqGrid para esto. Tendrá que esperar hasta que se cree la cuadrícula y luego, tal vez desde el evento loadComplete, deberá pasar manualmente por todas las filas y deshabilitar las seleccionadas.

Si inspecciona los elementos DOM que componen la cuadrícula, probablemente pueda encontrar una manera de quitar/deshabilitar el expansor para las filas seleccionadas. Tal vez usando jQuery.remove.

2

Esto, unido al 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(""); 
    } 
}, 
+0

Como se menciona Madalin, esto sólo elimina el icono. Los usuarios aún pueden hacer clic en él, lo que significa que la funcionalidad aún existe. – Joseph

0

Si usted está tratando de desactivar u ocultar las subcuadrículas expandir y contraer el botón a continuación, utilizar esto en LoadComplete,

jQuery("#GridTeableID").jqGrid('hideCol', "subgrid"); 
Cuestiones relacionadas