ExtJs - Checkbox selection model, disable checkbox per row

checkbox, extjs, extjs-grid, selectionmodel

Solution

You simply use the `beforeselect` event of the grid. Returning false, will not allow the selection. Check the documentation.

Ext.define('Mb.view.ship.OrdersGrid', {
    extend: 'Ext.grid.Panel',
    selType: 'checkboxmodel',
    selModel: {
        injectCheckbox: 0,
        pruneRemoved: false
    },

    listeners: {

        beforeselect: function(grid, record, index, eOpts) {
            if (record.get('yourProperty')) {//replace this with your logic.
                return false;
            }
        }

}
..........

If you really want to hide the checkbox, you could add CSS classes for your grid rows, and using them you could may be hide them. Check this answer for a solution.

Problem

I have a grid with a checkbox selection model. ``` Ext.define('Mb.view.ship.OrdersGrid', { extend: 'Ext.grid.Panel', selType: 'checkboxmodel', selModel: { injectCheckbox: 0, pruneRemoved: false }, ... ``` There are some rows that shold not be selectable, based on a value in a field. In a normal column, I can intervene in the display with `renderer` and hide the cell content with css (`metadata.tdCls`), but for the auto generated checkbox column, I cannot find a method to disable or hide the checkbox on a row basis. Does anyone have an idea how to do this ?

Original source

Related problems