1

虽然这听起来没有任何意义,但如果我让它工作的话……

我想要做的是让组合什么都不做,什么都不做......所以我设法阻止它将记录添加到选定的记录列表中。但我找不到阻止它把物品涂成蓝色的方法。了解我想要做什么的最好方法是检查 ExtJS 文档页面中的实时预览,看看如果你在下拉列表中选择一个项目,它会变成蓝色,尽管它没有将它添加到 selectedRecords 列表中。

这是 ExtJS 文档页面的 url...

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.field.ComboBox

对于那些不熟悉该工具的人,只需在此处查找代码编辑器,粘贴此代码并单击实时预览。

// The data store containing the list of states
var states = Ext.create('Ext.data.Store', {
    fields: ['abbr', 'name'],
    data : [
        {"abbr":"AL", "name":"Alabama"},
        {"abbr":"AK", "name":"Alaska"},
        {"abbr":"AZ", "name":"Arizona"}
    ]
});

// Create the combo box, attached to the states data store
Ext.create('Ext.form.ComboBox', {
    fieldLabel: 'Choose State',
    store: states,
    queryMode: 'local',
    displayField: 'name',
    valueField: 'abbr',
    multiSelect:true,
    renderTo: Ext.getBody(),
    onListSelectionChange:function(){
        console.log('Do nothing');
    } 
});
4

1 回答 1

2

这是你想要的?

onListSelectionChange:function(){
    this.picker.getSelectionModel().deselectAll();
} 

看到它在这里工作:http: //jsfiddle.net/lontivero/5Ftrf/1/

更新 如果您想保持以前选择的项目不变,您可以尝试这样做。它只会阻止新的选择。

onListSelectionChange:function(){
        var lastSelected = this.picker.getSelectionModel().lastSelected;
        itemNode = this.picker.getNode(lastSelected || 0);
        if (itemNode) {
            this.picker.getSelectionModel().deselect(lastSelected );
        }        
} 

在 jsfiddle:http: //jsfiddle.net/lontivero/5Ftrf/2/

于 2012-12-16T17:54:09.663 回答