自定义web api函数绑定到存储extjs网格

时间:2013-07-27 04:35:20

标签: extjs4.2

我需要帮助来绑定自定义webapi函数返回的数据。假设我的webapi函数调用语法如下所示:

var filter = {<some conditions here>};

Myapp.systemcontroller.Getdata(filter).then(function(result){
   --- this result contain my data and total record 
   });

如何将此函数绑定到商店代理,然后将其绑定到网格?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用不同的方式将数据添加到商店。它取决于您的数据结构(数组或对象)。

  1. grid.getStore.add(model)-ref: http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.Store
  2. grid.getStore.loadData(data,[append]) - ref: http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.Store-method-loadData
  3. grid.getStore.loadRawData(data,[append]) - ref: http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.Store-method-loadRawData
  4. grid.getStore.loadRecords(records,options) - ref: http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.Store-method-loadRecords
  5. 在您的情况下,您可以使用loadRecords()或add()

答案 1 :(得分:0)

问题已得到解决。我没有在我的商店中使用任何代理..我使用上面的api来检索数据并使用loadData方法将其绑定到存储。然后我将设置我的工具栏的totalProperty

- 正在加载

 Myapp.systemcontroller.Getdata(f).then(function (data) { 
            gridstore.loadData(data.Items);
            gridstore.totalCount = data.TotalNumber;
            var pgTb = Ext.getCmp('DataListPgTb');
            pgTb.onLoad();
            me.getLogList().setLoading(false);
        });

然后在toolbarchange事件中

toolBarChange: function (tbar, pageData, eOpts) {   
        var pageSize = PrIns.getApplication().Configuration.PageSize;
        var me = this;
        me.getLogList().setLoading(true);
        var f = Ext.create(MyApp.webapi.filter.LogFilter', { pageIndex: pageData, pageSize: pageSize, orderBy: 'Ascending' });
        var gridstore = this.getLogList().getStore();
         Myapp.systemcontroller.Getdata(f).then(function (data) { 
            gridstore.loadData(data.Items);
            gridstore.totalCount = data.TotalNumber;
            gridstore.currentPage = pageData;       
            var pgTb = Ext.getCmp('DataListPgTb');
            pgTb.onLoad();
            me.getLogList().setLoading(false);
        });
        return false;
    },

return false将阻止我们调用代理