Es posible deshabilitar la edición en jqGrid para determinadas celdas en una columna que está marcado como editable?

Por lo que he visto, las únicas opciones son «todas las células son editables» o «no hay células son editables».
Es allí una manera de trabajar alrededor de esto?

2 Comentarios

  1. 8

    Te recomendamos que utilizar lo que se denomina «Edición en línea» en la línea de edición. La mayor ventaja de este método es que es muy intuitiva y el usuario. Usted puede ver cómo funciona en la página de demostración http://trirand.com/blog/jqgrid/jqgrid.html. Seleccione en esta demo «Fila de Edición» y luego «el Uso de Eventos» o «tipo de Entrada» en el árbol de la izquierda de la parte. Con este método se puede implementar cualquier personalizado verificar si la fila seleccionada debe ser permitido para ser editado o no dentro de la identificador de evento onSelectRow o ondblClickRow. Si usted permite la edición, a continuación, llame editRow método de jqGrid. Este método crea los controles de entrada para todas las columnas editables y el usuario puede modificar los valores de la fila de una manera natural. Las modificaciones serán salvos si el usuario presione la tecla «enter» o cancelado en la tecla «esc».

    Yo personalmente prefiero a implementar la llamada de editRow método dentro de ondblClickRow controlador de eventos. De modo que el usuario puede continuar con la selección de filas como de costumbre, y puede utilizar el doble clic en la fila de edición. El pseudo código que tendrá el aspecto siguiente:

    var lastSel = -1;
    var isRowEditable = function (id) {
        //implement your criteria here 
        return true;
    };
    var grid = jQuery('#list').jqGrid({
        //...
        ondblClickRow: function(id, ri, ci) {
            if (isRowEditable(id)) {
                //edit the row and save it on press "enter" key
                grid.jqGrid('editRow',id,true);
            }
        },
        onSelectRow: function(id) {
            if (id && id !== lastSel) {
                //cancel editing of the previous selected row if it was in editing state.
                //jqGrid hold intern savedRow array inside of jqGrid object,
                //so it is safe to call restoreRow method with any id parameter
                //if jqGrid not in editing state
                grid.jqGrid('restoreRow',lastSel);
                lastSel = id;
            }
        },
        pager: '#pager'
    }).jqGrid('navGrid','#pager',{edit:false});
    • Gracias por tu detallada de entrada. Suena como una solución razonable.
    • esto permite en línea y el formulario de edición de la fila. Cómo prevenir la línea y el formulario de edición de movilidad fila también?
  2. 2

    Que usted puede hacer lógicamente. Usted debe tener algunos criterios para las células que algunas células pueden ser editable y algunos no lo son.

    Lo he implementado fila sabio.

    Cuando cree XML para jqgrid, dar una identificación a cada fila.

    Basado en estos ids puede hacer esas filas de celdas editables o editable utilizando jqgrid métodos.

    A continuación se beforeEditCell método:

    beforeEditCell: function(rowid, cellname, value, iRow, iCol) {
       //here identify row based on rowid
       //if the row should not be editable than simply make the cells noneditable using
       editCell(iRow, iCol, false);
       jQuery(gridid).jqGrid("restoreCell",iRow,iCol);
    
    }

    Puedes aplicar a ti mismo.

    Espero que mi sugerencia sería de ayuda. 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here