ExtJS:2个ajax商店,1个额外的行

时间:2016-04-20 19:00:48

标签: ajax extjs local store

我有这段代码:

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”)而不将其写入数据库 我不想在数据库中添加“全部”,因为在产品的网格中我想要一个具有所有业务( storeBusinessCombo )而没有“全部”记录的组合框。
有谁知道我怎么能这样做?
(上面的代码没有做我想要的, storeBusiness 显示网格中没有'All'的所有业务)

重要提示:如果 Ext.define('storeBusiness',的代理类型为''memory'

,则此方法有效

2 个答案:

答案 0 :(得分:0)

我想到了两种方法:

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

答案 1 :(得分:0)

要解决这个问题,我已经完成了:

  1. Ext.define(&#39; storeBusiness&#39;,{添加到[Route("api/[controller]")] public class TestController: Controller { private ITestRepository _testRepository; public TestController(ITestRepository testRepository) { _testRepository= testRepository; } [HttpGet] public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } }
  2. 输入此代码:

    public void ConfigureServices(IServiceCollection services)
    {
       // Add framework services.
       services
          .AddMvcCore()
          .AddJsonFormatters()
          .AddApiExplorer();
    
       services.AddScoped<ITestRepository , TestRepository >();    
       services.AddSwaggerGen();
    }
    

    你应该把

    autoLoad: false,

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