es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ExtJs – Modelo de selección de casillas de verificación, deshabilitar casilla de verificación por fila y evitar borrar todas las selecciones.

Tengo una cuadrícula con un modelo de selección de casilla de verificación.

Hay algunas filas que no se pueden seleccionar, según un valor en un campo. Funciona.

Mi problema es que borrar todas las selecciones haciendo clic en la casilla de verificación en el encabezado de la columna no funciona.
En este enlace veo que Costa se enfrentó al mismo problema que yo: ExtJs – Modelo de selección de casilla de verificación, deshabilitar casilla de verificación por fila.

Este escuchador funciona, pero interrumpe la eliminación de casillas de verificación.

Código:

xtype: ‘grid’,
border: false,

selModel: {
selType: ‘checkboxmodel’,
listeners: {
beforeselect: function(grid, record) {
if (!record.get(‘supplier’)) {
return false;
}
}
}
},

columnas:[
….
],
….

¿Alguien tiene una idea de cómo hacer esto?

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para resolver este problema, puedes utilizar el escucha beforeselect como se muestra en el código proporcionado. Sin embargo, para asegurarte de que seguirá funcionando la opción de despejar todas las selecciones al hacer clic en el casilla de verificación del encabezado de la columna, necesitas añadir una condición adicional dentro del escucha beforeselect que verifique si se está haciendo clic en el casilla de verificación del encabezado de la columna.

    Aquí tienes un fragmento de código actualizado:

    xtype: 'grid',
    border: false,
    
    selModel: {
        selType: 'checkboxmodel',
        listeners: {
            beforeselect: function(model, record, index, eOpts) {
                var headerCheckboxClicked = (eOpts && eOpts.target && eOpts.target.type === 'checkbox');
                if (headerCheckboxClicked) {
                    return true;
                }
                if (!record.get('supplier')) {
                    return false;
                }
            }
        }
    },
    
    columns:[
    ....
    ],
    ....
    

    En este código actualizado, el escucha beforeselect verifica si el evento de clic es desencadenado por la casilla de verificación del encabezado. Si es así, la función devuelve true para permitir la eliminación de todas las selecciones. De lo contrario, verifica si la fila actual es seleccionable o no en función del valor en el campo supplier, y devuelve false si no debe ser seleccionable.

    Al incorporar esta condición adicional, deberías poder mantener la funcionalidad de eliminar todas las selecciones al mismo tiempo que se evita la selección de filas que no deben ser seleccionables.

Comments are closed.