1

列ごとに説明するコードがあります

cols.offer.push({
    dataIndex: 'tags',
    header : 'Тэги',
    width:150,
    editor : {
        xtype : 'combo',
        store :    gridTagStore,
        queryMode: 'local',
        displayField: 'name',
        //valueField: 'name',
        multiSelect:true,
        typeAhead: true,
        editable:false,
        triggerAction: 'all',
        selectOnTab: true,
        lazyRender: true,
        listClass: 'x-combo-list-small',
        listeners: {
            focus: function(e) {
                this.setValue(this.rawValue.split(', '));
            }
        }
    }
});

そのため、コンボボックスで 2 つのオプションのみを選択したいと考えています。

3番目を選択した場合、何も起こりません


ありがとう!わたしにはできる!

  cols.offer.push({
    dataIndex: 'show_at_index_as_tag_id',
    header : 'Показывать на главной под тегом',
    width:150,
    editor : {
        xtype : 'combo',
        store :    gridTagStore,
        queryMode: 'local',
        typeAhead: true,
        displayField: 'name',
        selectOnTab: true,
        triggerAction: 'all',
        lazyRender: true,
        valueField: 'id',
        multiSelect:true,
        listClass: 'x-combo-list-small',
        listeners: {
                beforeselect : function(){
                    return (this.value.length == 1 && this.value[0] === "") || this.value.length == 0 ;
            }
        }
    }
});

アプリケーションの他の場所で使用されているオプションを含むストアがあるため、1 つのオプションのみに制限し、複数選択を使用することにしました。

ただし、このコンボでは空の値を選択する必要があるため、1 つのオプションを選択した複数選択が適切な解決策です。

4

1 に答える 1

2

beforeselectComboBox にリスナーを追加します。関数で、ComboBox で既に選択されているアイテムの数を定義します (カウント > 2 return false;~の場合) do nothing

于 2012-09-06T11:35:15.053 に答える