我们有一个 ExtJS v4.1 组合框,我们已经将它绑定(bind)到一个商店并将其 pageSize 配置如下:
var myStore = Ext.create('Ext.data.Store', {
model: 'User',
remoteFilter: true,
remotePaging: true,
autoLoad: true
proxy: {
type: 'ajax',
url: '/users.json',
reader: {
type: 'json',
root: 'users'
}
},
pageSize: 50, // <= store pageSize
});
Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Choose',
store: myStore,
queryMode: 'remote',
displayField: 'Name',
valueField: 'Id',
pageSize: 20 // <= combobo pageSize
});
作为documentation says当 queryMode='remote'
时,应该使用组合框的 pageSize
属性来过滤发送到服务器的 ajax 查询。但是我们看到的是相反的,它只是用来在组合框的底部显示一个分页工具栏(文档的第一条评论是这样说的)。
但在这种特定情况下,我们真正需要的是覆盖商店的 pageSize
属性,并使组合框的 pageSize
属性用于过滤 ajax 请求。
我们如何在组合框中实现/扩展这样的功能?我们如何在组合框中覆盖商店的 pageSize
属性?
最佳答案
comboBox 中的 pageSize 实际上是一个 true/false 值,尽管有文档。
在 javascript 中,如果为 0,则分页工具栏关闭,否则打开。
这是共享商店,还是仅用于组合框?
如果共享,那么您需要保存商店的页面大小,必要时为组合更改它,然后再次设置回来:
{
xtype: 'combobox',
width: 350,
store: new MyStore(),
fieldLabel: 'Label',
pageSize: 2,
listeners:{
beforequery:function(queryEvent){
var combo = queryEvent.combo;
var store = combo.getStore();
var oldPageSize = store.pageSize;
store.on('load', function(){
this.pageSize = oldPageSize;
});
store.pageSize = combo.pageSize;
}
}
}
关于javascript - 如何解决 ExtJS 4.1 Combobox pageSize 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16164862/