Cómo deshabilitar la edición en línea y de formularios para filas publicadas en jqgrid

Estoy buscando una manera de deshabilitar la edición de filas jqGrid donde la columna isPosted tiene un valor verdadero.

Se utilizan tanto la edición de formularios como la edición en línea con formateador de acciones o doble clic en fila. Todos los tipos de edición deben estar deshabilitados. Probé el código a continuación en jqGrid loadcomplete.

Esto no deshabilita la edición de formularios. También haga doble clic en la fila publicada para mostrar los botones de guardar y cancelar (todas las columnas están en modo de solo lectura).

¿Cómo deshabilitar todo tipo de edición de filas para filas publicadas? jqGrid se rellena a partir de datos jqson remotos.

  loadCompete: function () {
    var
      postedCol = getColumnIndexByName($grid, 'isPosted'),
      cRows = $grid[0].rows.length,
      iRow,
      row,
      className,
      isPosted,
      cm = $grid.jqGrid('getGridParam', 'colModel'),
      l,
      iActionsCol = getColumnIndexByName($grid, '_actions');

    l = cm.length;
    for (iRow = 0; iRow < cRows; iRow = iRow + 1) {
            row = $grid[0].rows[iRow];
            className = row.className;
            isPosted = false;
            if ($.inArray('jqgrow', className.split(' ')) > 0) {
              isPosted = $(row.cells[postedCol]).find(">div>input:checked").length > 0;
              if (isPosted) {
                    if ($.inArray('jqgrid-postedrow', className.split(' ')) === -1) {
                        // todo: how to disable row editing and inline edit actions buttons.
                        // why those two lines do not disable
                        row.className = className + ' jqgrid-postedrow not-editable-row';
                        $(row.cells[iActionsCol]).attr('editable', '0'); 
                        $(row.cells[iActionsCol]).find(">div>div.ui-inline-del").hide();
                        $(row.cells[iActionsCol]).find(">div>div.ui-inline-edit").hide();
                    }
                }
            }
        }


css file:

.jqgrid-postedrow
{
    background-color: #FFFFD0;
    background-image: none;
}

preguntado el 31 de julio de 12 a las 15:07

1 Respuestas

@Andrus, bueno, puede verificar gridComplete o LoadComplete sobre el valor de isPosted, si es cierto, simplemente oculte los botones de edición usando jquery, y puede obtener la identificación de esos botones usando las herramientas de desarrollo, ¿verdad?

Tenía un requisito similar donde en algunas filas tenía que mostrar el botón de edición y en algunas filas tenía que ocultarlas según los datos en jqgrid.

así que obtuve la identificación de esos botones usando herramientas de desarrollo y en loadComlete verifiqué el valor de todas las filas y oculté los botones. Creo que eso también puede funcionar para ti. y hablando de onSelectRow o onDblClickRow verifique el valor de isPosted, si es verdadero, debe devolver falso desde su función; de lo contrario, vaya a la edición normal con algo como esto

jQuery("#grid_id").editRow(id, propiedades);

Respondido 31 Jul 12, 17:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.