ExtJS 4 - 如何禁用'下一个'&当网格中没有记录时,分页工具栏中的“最后”图标?

时间:2011-10-04 11:29:45

标签: extjs grid extjs4 paging store

enter image description here

我的网格底部有一个分页工具栏,顶部有一个“加载”按钮,可用于加载网格中的记录。

因此,最初网格中没有值,但在这种情况下,分页工具栏也会显示第1页的1,并且启用了“下一页”或“最后一页”的图标。

由于这个原因,当用户点击这些图标中的任何一个时,虽然没有加载记录但是在内部“page”和“start”的值被设置为NaN,然后​​用户点击“加载”按钮然后这些NaN值传递给服务器,这不是预期的。

也就是说,理想情况下,它应该传递page = 0& start = 0,因为它传递了page = NaN& start = NaN。服务器无法识别这些值并引发错误。

对此的一个快速解决方法是在服务器端修改代码,但目前这超出了我们团队工作的范围,因此我想知道如何实现以下操作:

问:如果网格没有记录,如何在分页工具栏中禁用“下一个”,“最后”图标?

或者,

问:如何在加载商店之前修改'page'和'start'变量的值,以便我们可以传递0而不是NaN?

我尝试在网格存储的beforeload事件中访问这些参数,但在那里我可以找到像startParam或pageParam这样的属性 - 显示参数名称,但找不到任何访问/修改值的方法。 / p>

有没有人对此有所了解?

提前致谢。

PS:使用的ExtJS版本是4。

2 个答案:

答案 0 :(得分:2)

一种可能的解决方案是使用

store.loadPage(1);

而不是store.load();

第二种可能的解决方案是首先禁用工具栏,并在加载数据时启用它:

var grid = Ext.create('Ext.grid.Panel', {
    // ...
    store: store,
    dockedItems: [{
        xtype: 'pagingtoolbar',
        store: store,
        dock: 'bottom',
        disabled: true
    }]
});
store.on('load', function(){
  grid.down('pagingtoolbar').enable();
});

答案 1 :(得分:1)

检查响应中的总计数,如果在网格为空时没有返回零,则会发生此类错误。