【问题标题】:the extjs component refreshextjs 组件刷新
【发布时间】:2011-04-28 09:26:58
【问题描述】:

我的页面中有几个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会从服务器端获取新数据,grid panel刷新,这样就好了,

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

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

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

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

对于 GridPanle,有一个 beforeerender

事件

http://dev.sencha.com/deploy/dev/docs/?class=Ext.grid.GridPanel

对于图表,有一个 beforerefresh

事件

http://dev.sencha.com/deploy/dev/docs/?class=Ext.chart.Chart

那么使用渲染还是刷新?

有什么想法吗?

【问题讨论】:

    标签: extjs refresh reload store


    【解决方案1】:

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

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

    { total:0, items:[] }
    

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 2012-05-19
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      相关资源
      最近更新 更多