1

我的页面中有几个extjs组件,图表,网格,formPanel等,现在我遇到了一些刷新它们的问题,以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 的 reload 事件被触发(由用户触发)时,store 将从服务器端获取新数据,网格面板刷新,这很好,

但是有时候服务端的数据是空的(比如,没有根据客户端的请求找到数据),如果是这样,网格面板也会保存上次请求的数据,

如何使网格刷新(不显示)并向用户显示未找到数据的内容?

我页面中的其他组件也是如此,大多数是一些图表。

我曾经想过使用添加一个处理程序来处理组件刷新的事件,在它刷新之前,检查存储,如果存储为空,那么做一些事情,但是我发现我无法获取一个组件的存储,也他们的事件是不同的,例如:

对于 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

那么使用渲染还是刷新?

有任何想法吗?

4

1 回答 1

1

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

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

{ total:0, items:[] }

(假设“total”的totalProperty和“items”的根)

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

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

于 2010-10-23T01:41:09.017 回答