列网格中的动态存储可编辑

时间:2016-07-01 13:28:53

标签: extjs grid store

在网格列中可编辑( ExtJs v4.2.2 ),如何动态更改商店? 关键是按运动类型(movingTypeId)加载具有不同参数的商店:

要附加不同列表的字段是'Reason',列是:

this.columns = [
{
    text: 'id',
    dataIndex: 'movementId',
    sortable: false,
    hideable: true,
    sortableColumn: false,
    hidden: true,
    flex : 1,
    scope:this
},
{
    text: 'TypeId',
    dataIndex: 'movementTypeId',
    sortable: false,
    sortableColumn: false,
    hideable: true,
    sortableColumns: false,
    hidden: true,
    flex : 2,
    scope:this
},

{
    text: 'Reason',
    dataIndex: 'movementReasonId',
    sortable: false,
    hideable: true,
    sortableColumn: false,
    field: {
        xtype: 'combobox',
        align: 'center',
        typeAhead: true,
        triggerAction: 'all',
        //selectOnTab: true,
        store: this.storeMovementReasonType,
        displayField: 'label'
    },
    flex : 3,
    scope:this
},

];

因此,对于每一行,当存储处于加载状态时,需要设置额外的参数:

if(movementTypeId === 89){
 storeMovementReasonType.getProxy().setExtraParam('dictionaryTypeId',11);
 }
 if(movementTypeId === 94){
    storeMovementReasonType.getProxy().setExtraParam('dictionaryTypeId',8);
 }

有可能吗? 谢谢你的时间:))

1 个答案:

答案 0 :(得分:1)

您希望在您的rowediting插件上实现beforeedit侦听器:

listeners:{
    beforeedit:function(editor , context , eOpts) {
        var movementTypeId = context.record.get("movementTypeId");
        if(movementTypeId === 89){
            storeMovementReasonType.getProxy().setExtraParam('dictionaryTypeId',11);
        }
        if(movementTypeId === 94){
            storeMovementReasonType.getProxy().setExtraParam('dictionaryTypeId',8);
        }
        storeMovementReasonType.load();
    }
}