ExtJS:2 ajax 存储,1 有一个额外的行

ExtJS: 2 ajax store, 1 with an extra row

我有这个代码:

Ext.define('storeBusiness',{
    extend: 'Ext.data.Store',
    autoLoad: true,
    autoSync: true,
    model: 'Business',
    proxy: {
        type: 'ajax',
        api: {
            read: '../crud/ler_filter.php?db='+database+'&tbl=mercados',
            create: '../crud/criar.php?db='+database+'&tbl=mercados',
            update: '../crud/update.php?db='+database+'&tbl=mercados',
            destroy: '../crud/apagar.php?db='+database+'&tbl=mercados'
        },
        reader: {
            type: 'json',
            root: 'rows'
        },
        writer: {
            type:'json'
        }
    }
});

var storeBusinessCombo = Ext.create('storeBusiness');

var storeBusiness = Ext.create('storeBusiness');

storeBusiness.add({id: 0, business: "All"});

我有 2 个网格。一个有 storeBusiness,另一个有 storeProducts.
工作方式是,当我单击业务网格时,它会过滤产品网格,以便显示该业务的产品。 在业务网格上,它具有 storeBusiness,它从数据库中获取记录。我想从数据库中获取所有业务并添加一条记录(名为'All')而不将其写入数据库。
我不想将 'All' 添加到数据库中,因为在产品的网格中我想要一个包含所有业务的组合框 (storeBusinessCombo) 而没有 'All' 记录.
有人知道我该怎么做吗?
(上面的代码没有做我想做的,storeBusiness 显示网格中没有 'All' 的所有业务)

重要提示: 如果 Ext.define('storeBusiness', 具有类型为: 'memory'

想到了两种方法:

  1. 加载后将 "all" 记录添加到存储中并且不同步,因此 记录不会发送到服务器。
  2. 使用内存代理,检索 企业记录通过 Ajax 请求并通过其数据配置将它们分配给商店。

为了解决这个问题,我做了:

  1. Ext.define('storeBusiness',{放到autoLoad: false,
  2. 输入此代码:

    var storeBusinessCombo = Ext.create('storeBusiness', {autoLoad: true});
    
    var storeBusiness = Ext.create('storeBusiness');
    
    storeBusiness.on('beforeload', function(){
        storeBusiness.loadData([{id: 0, business: "All"}]);
    }
    

    你应该把

    storeBusiness.load({addRecords: true});
    

    当你想加载storeBusiness.