【问题标题】:Extjs 4.2 edit store data in controllerExtjs 4.2 在控制器中编辑存储数据
【发布时间】:2016-12-16 16:25:56
【问题描述】:

我有一个网格,我用其他商店的数据手动填充其中的数据:

fillfunction:function(){
    var Store=Ext.ComponentQuery.query('#grid')[0].getStore();
    var Store2=Ext.ComponentQuery.query('#grid2')[0].getStore();
    Store.each(function(record){
        var record=Ext.create('App.model.record');
        record.data['Referencia_proveedor']=record.data['codigo_erp_producto'];
        record.data['Especialidad']=record.data['nombre_comercial_1'];
        record.data['Presentacion']=record.data['forma_presentacion'];


        record.data['Porc_real_decreto']=record.data['porcentaje_real_decreto'];
        record.data['ADJ']=false;
        Store2.add(record);
    });
}

这个网格有 selType: 'checkboxmodel',而且我有一个按钮可以将数据['ADJ'] 从 store(在模型中此列类型为布尔值)从 false 更改为 true。 我用下一个代码编辑数据:

changeValue:function(){
    var selection=Ext.ComponentQuery.query('#grid2')[0].getSelectionModel().getSelection();
    for (i = 0; i < selection.length; i++){
        var index=Ext.ComponentQuery.query('#grid2')[0].getStore().indexOf(selection[i]);
        var record=Ext.ComponentQuery.query('#grid2')[0].getStore().getAt(index);
        record.set('ADJ',true);
    }

    var total=Ext.ComponentQuery.query('#grid2')[0].getStore().count();
    var alterstore=Ext.ComponentQuery.query('#grid2')[0].getStore().getRange(0,total);
    Ext.ComponentQuery.query('#grid2')[0].getStore().loadRecords(alterstore,{addRecords: false});
}

如果我再次打印 ADJ 的存储值已更新,但网格中仍然是旧值。如何更新网格以查看新值?

编辑

我的网格代码

var panel1=new Ext.grid.Panel({
        itemId:'panel1',
        flex:3,
        store: store,
        title:'<span style="color:blue">Title 1</span>',
        scroll:'vertical',
        stripeRows: true,
        selModel: {
            selType: 'checkboxmodel'
        },
        bbar:{
            xtype: 'container',
            layout: 'anchor',
            items: [bottombar0]
        },
        loadMask: true,
        columns:{
            items:[

                   {header:'<span>R</span>',dataIndex:'Referencia_proveedor',itemId:'',flex:1},
                   {header:'<span>A</span>',dataIndex:'Especialidad',itemId:'',flex:3},
                   {header:'<span>P</span>',dataIndex:'Presentacion',itemId:'',flex:1},
                   {header:'<span>U</span>',dataIndex:'',align:'right',itemId:'',flex:1,renderer:Unidades},
                   {header:'<span>PVL</span>',dataIndex:'',align:'right',itemId:'',flex:2,renderer:Moneda},
                   {header:'<span>RD</span>',dataIndex:'Porc_real_decreto',align:'right',itemId:'',flex:1,renderer:Porcentaje},
                   {header:'<span>ADJ</span>',dataIndex:'',align:'center',itemId:'',flex:1,renderer:adjudicado}
            ]
        }
    });

【问题讨论】:

  • 商店是否绑定到网格?
  • 不,我该怎么做?
  • 试试 grid.refresh()
  • grid.getView().refresh() 什么都不做,adj=true 的记录不刷新
  • 好的,可以请您添加网格的代码吗?

标签: extjs extjs4.2


【解决方案1】:

这很简单,我有一个拼写错误

{header:'<span>ADJ</span>',dataIndex:'',align:'center',itemId:'',flex:1,renderer:adjudicado}

这里我忘了设置 dataIndex 为:

{header:'<span>ADJ</span>',dataIndex:'ADJ',align:'center',itemId:'',flex:1,renderer:adjudicado}

忘记设置字段的dataIndex dataIndex:'ADJ'

接下来我在控制器中执行:

changeValue:function(){
    var selection=Ext.ComponentQuery.query('#grid2')[0].getSelectionModel().getSelection();
    for (i = 0; i < selection.length; i++){
        var index=Ext.ComponentQuery.query('#grid2')[0].getStore().indexOf(selection[i]);
        var record=Ext.ComponentQuery.query('#grid2')[0].getStore().getAt(index);
        record.set('ADJ',true);
    }
Ext.ComponentQuery.query('#grid2')[0].getStore().commitChanges();

然后刷新网格中的值。我执行 commitChanges 以清除脏字段。

【讨论】:

    猜你喜欢
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 2013-08-18
    • 1970-01-01
    相关资源
    最近更新 更多