ExtJS 6.5.3 中的取消选择列表方法

deselect list method in ExtJS 6.5.3

我对 Ext.dataview.List 取消选择方法有一个大问题,它在这个版本中不存在,我正在从 6.0.1 迁移到 6.5.3 以及所有调用取消选择方法目前不起作用。

此致。

您需要使用dataView.getSelectable().deselect(record);方法。

在此 FIDDLE 中,我使用 dataview 创建了一个演示。我希望这能帮助你实现你的要求。

代码片段

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.create({
            xtype: 'panel',
            tittle: 'DeSELECT RECORD',
            fullscreen: true,
            layout: 'vbox',
            items: [{
                xtype: 'button',
                text: 'De-select selected record',
                handler: function (btn) {
                    var dataView = btn.up('panel').down('dataview');
                    //If you have single selction then you just need to get {dataView.getSelection()}
                    //it will return single record.
                    dataView.getSelectable().deselect(dataView.getSelection());

                    //If you have multiple selection then you need to get {dataView.getSelections()}
                    // it will return all selected record
                    // need to loop to deselect every record
                    // dataView.getSelections().forEach(r => {
                    //     dataView.getSelectable().deselect(r);
                    // });


                }
            }, {
                xtype: 'dataview',
                flex: 1,
                // layout:'fit',
                //  width:'100%',
                store: {
                    fields: ['name', 'age'],
                    data: [{
                        name: 'Peter',
                        age: 26
                    }, {
                        name: 'Ray',
                        age: 21
                    }, {
                        name: 'Egon',
                        age: 24
                    }, {
                        name: 'Winston',
                        age: 24
                    }]
                },

                itemTpl: '<div>{name} is {age} years old</div>'
            }]
        });
    }
});

CSS

<style>
    .x-dataview-item {
        background-color: #ccc;
        color: #FFF;
        padding: 10px;
        font-weight: bolder;
        border-bottom: 1px solid #fff;
    }

    .x-dataview-item.x-selected{
            background-color: #5c5c;
    }

</style>

正确的方法是与可选择的进行交互。 Fiddle:

Ext.application({
    name: 'Fiddle',

    launch: function () {
        var dv = Ext.Viewport.add([{
            xtype: 'dataview',
            store: {
                data: [{
                    name: 'Peter'
                }, {
                    name: 'Ray'
                }, {
                    name: 'Egon'
                }, {
                    name: 'Winston'
                }]
            },
            itemTpl: '{name}'
        }, {
            docked: 'top',
            xtype: 'button',
            text: 'Deselect first',
            handler: function (btn) {
                dv.getSelectable().deselect(dv.getStore().first());
            }
        }])[0];

        dv.getSelectable().select(0);
    }
});