2015-10-13 70 views
0

我是新来的extjs,我在将json数据加载到网格时遇到了一些问题。在调试器中,我可以看到网格的商店和列正按照我想要的方式精确填充。但数据不显示在网格中。我不知道为什么。但我的网格不会加载数据。extjs即使在网格对象中存储和显示网格时,网格也不会显示预期数据

我在做什么错?

预先感谢您。

网格视图:

Ext.define('searchadmin.view.reports.DynamicGrid' ,{ 
    extend: 'Ext.grid.Panel', 
    alias : 'widget.dynamicGrid', 
    title : 'Results', 
    columns: [], 
    columnLines : true, 
    sortableColumns : false, 
    autoScroll : true, 
    viewConfig : { 
     stripeRows : false, 
     loadMask:true  
    } 
});  

商店:

Ext.define('searchadmin.store.DynamicGridStore', { 
    extend : 'Ext.data.Store', 
    model: 'searchadmin.model.DynamicGridModel', 

    proxy: { 
     type: 'memory', 
     reader: { 
      type: 'json', 
      root: 'data' 
     } 
    } 
}); 

模型:

Ext.define('searchadmin.model.DynamicGridModel', { 
    extend: 'Ext.data.Model', 
    fields: [] 
}); 

为页的视图配置在其上面的网格是在该要旨: Reports.js

的报告控制器包含代码动态地构成模型并存储在handleSelectQueryResult()中:ReportsController

+0

您在控制器中的代码不正确。你的“executeReport”函数总是返回undefined,请求尚未完成。您需要从成功fn执行回调。 –

+0

@EvanTrimboli - 我已经更新了以上链接中的控制器。在调试器中,我可以看到网格的商店和栏目正在填充,所有内容都按照我想要的方式准确无误地显示。但数据不显示在网格中。我不知道为什么。我也更新了Reports.js视图。请看看你是否可以帮助为什么网格仍然没有渲染。您可以在上面的链接中查看更新的代码。我正在使用extjs 4.2.1 –

+0

据我所见,问题仍然存在。 'executeReport'将总是返回'undefined'。 http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call –

回答

1

你将不得不使用reconfigure网格的方法,而不是像handleSelectQueryResultReportsController.js函数那样分配列和存储。

grid.columns = _columns; //will not work 
grid.store = queryStore; //will not work 

另请注意,ComponentQuery.query返回一个数组。

试试这个方法。

var grid = Ext.ComponentQuery.query('#dynamicGridId')[0]; //or var grid = Ext.getCmp('dynamicGridId'); 
grid.reconfigure(queryStore, _columns); 
+0

非常感谢你!你知道是否有办法缓冲网格,使其不能在面板中显示整个事物吗?分页会有帮助。 –

+0

您可以使用分页或缓冲存储。请参阅http://dev.sencha.com/ext/5.1.0/examples/grid/buffered-store.html – Gilsha

+0

我接受了。感谢您的帮助! –