extjs组件刷新

时间:2010-10-21 03:08:30

标签: extjs refresh reload store

我的页面中有几个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

那么使用渲染还是刷新?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

服务器的“空”响应通常应被视为错误。

在网格示例中,如果没有匹配,则应该有一些记录集的表示,其中记录为零。对于典型的JsonStore,响应应如下所示:

{ total:0, items:[] }

(假设totalProperty为“total”,以及“items”的根)

这样,它仍然是一个有效的响应(即使它不是null)。

如果您的服务器发回“null”或空原始响应(零长度字符串),JsonReader不知道如何处理它,错误或保释。