我的页面中有几个extjs组件,图表,gird,formPanel和ect,现在我遇到了一些关于刷新它们的问题,以gridPanle为例:
这是网格代码:
var myStore=new Ext.data.JsonStore({
autoLoad:true,
fields:['name','age'.....]
});
var grid = new Ext.grid.GridPanel({
stroe:myStore,
colums:myColumns
//....other config
});
当stroe的重载事件发生时(由用户触发),商店将从服务器端获取新数据,网格面板刷新,这很好,
但是有时来自服务器的数据为空(例如,根据来自客户端的请求没有找到数据),如果是这样,网格面板也会保存最后一次请求的数据,
如何让网格刷新(不显示任何内容)并向用户显示没有找到数据的内容?
我页面中的其他组件也是如此,大多数是一些图表。
我曾经想过使用添加一个处理程序来处理组件的刷新事件,在刷新之前,检查商店,如果商店是null,那么做一些事情,但是我发现我无法获得存储组件,它们的事件也不同,例如:
对于GridPanle,有一个 beforerender
的事件http://dev.sencha.com/deploy/dev/docs/?class=Ext.grid.GridPanel
对于图表,有一个 beforerefresh
的事件http://dev.sencha.com/deploy/dev/docs/?class=Ext.chart.Chart
那么使用渲染还是刷新?
有什么想法吗?
答案 0 :(得分:1)
服务器的“空”响应通常应被视为错误。
在网格示例中,如果没有匹配,则应该有一些记录集的表示,其中记录为零。对于典型的JsonStore,响应应如下所示:
{ total:0, items:[] }
(假设totalProperty为“total”,以及“items”的根)
这样,它仍然是一个有效的响应(即使它不是null)。
如果您的服务器发回“null”或空原始响应(零长度字符串),JsonReader不知道如何处理它,错误或保释。