如何取消选中 Ext 网格中特定行的检查列

How to uncheck the checkcolumn of perticular row in Ext grid

我有一个网格,其中有一列复选框。我用过 xtype checkcolumn

为此。在此处关注 fiddle:https://fiddle.sencha.com/#view/editor&fiddle/2ano

现在我想在单击给定按钮时取消选中特定行(在本例中为第 2 行)的复选框。我尝试使用 xtypes 获取它们,但没有成功。

我终于找到了解决方法。

store.getAt(1).data.active = false;
grid.getView().refresh();

它有效,但不确定这样做是否正确。 我会很高兴提出任何建议。 谢谢。

One way as per your code.

您可以使用网格存储的这种方法store.each(), store.clearFilter() and store.filter('active',true).

在此 FIDDLE 中,您可以使用 record.set('active',false).

在此处检查 uncheck 已检查的列
var store = Ext.create('Ext.data.Store', {
    fields: ['name', 'email', 'phone', 'active'],
    data: [{
        name: 'Lisa',
        email: 'lisa@simpsons.com',
        phone: '555-111-1224',
        active: false
    }, {
        name: 'Bart',
        email: 'bart@simpsons.com',
        phone: '555-222-1234',
        active: true
    }, {
        name: 'Homer',
        email: 'homer@simpsons.com',
        phone: '555-222-1244',
        active: false
    }, {
        name: 'Marge',
        email: 'marge@simpsons.com',
        phone: '555-222-1254',
        active: false
    }]
});

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    itemId: 'test',
    renderTo: Ext.getBody(),
    store: store,
    buttons: [{
        text: 'Un check',
        handler: function () {
            var store = this.up('grid').getStore();
            store.clearFilter();
            store.filter('active', true);
            store.each(function (rec) {
                rec.set('active', false);
            });
            store.clearFilter();
        }
    }],
    columns: [{
        text: 'Name',
        dataIndex: 'name'
    }, {
        text: 'Email',
        dataIndex: 'email',
        flex: 1
    }, {
        text: 'Phone',
        dataIndex: 'phone'
    }, {
        xtype: 'checkcolumn',
        text: 'Active',
        dataIndex: 'active'
    }]
});

Another way as per your code.

您可以使用 selModel and selType configs for grid.

在此 FIDDLE 中,我使用 selTypeselModel 配置创建了一个演示。它将帮助您或指导您更多地了解 grid 复选框选择。

Ext.create('Ext.grid.Panel', {
        title: 'Simpsons',
        store: store,
        id: 'testGrid',
        columns: [{
            text: 'Name',
            dataIndex: 'name'
        }, {
            text: 'Email',
            dataIndex: 'email',
            flex: 1
        }, {
            text: 'Phone',
            dataIndex: 'phone'
        }],
        renderTo: Ext.getBody(),
        selModel: {
            checkOnly: false,
            //injectCheckbox: 'last',
            mode: 'SIMPLE'
        },
        selType: 'checkboxmodel',
        buttons: [{
            text: 'Select All',
            handler: function () {
                Ext.getCmp('testGrid').getSelectionModel().selectAll();
            }
        }, {
            text: 'Deselect All',
            handler: function () {
                Ext.getCmp('testGrid').getSelectionModel().deselectAll();
            }
        }]
    });