如何解决ExtJS 4.1组合框pageSize的bug
How can solve ExtJS 4.1 Combobox pageSize bug?
我们有一个ExtJS v4.1组合框,我们已经将它绑定到一个存储,并设置其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
});
正如文档中所说,组合框的pageSize
属性应该用于过滤发送到服务器的ajax查询,当queryMode='remote'
。但是我们看到的是相反的,它只被用来在组合框的底部显示分页工具栏(文档的第一条注释是这样说的)。
但是在这个特定的情况下,我们真正需要的是重写存储的pageSize
属性,并使combobox的pageSize
属性用于过滤ajax请求。
我们如何在组合框中实现/扩展这样的功能?我们如何在combobox中覆盖商店的pageSize
属性?
pageSize在comboBox实际上是一个真/假值,尽管文档。
在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;
}
}
}
另一种方法是,在实例化时向存储中添加参数/config。我是这样做的
store: new Ext.create('MyStore',{pageSize:20}),
pageSize: true
相关文章:
- 根据id将json数组组合为一个json数组
- 接受不在列表中的值-引导组合框
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 组合两个javascript函数
- Telerik rad组合框多列数据绑定
- 组合 2 个 JavaScript .scroll 函数
- 如何使用jquery组合两个数组
- onChange不足以从Dojo组合框触发查询
- 组合承诺和非承诺值
- 所有控件的组合框
- 在D3中组合多个事件
- AngularJS-如何只对多个事件的组合采取行动
- 如何在服务、技能、投资组合等方面添加滑动效果
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 如何在谷歌可视化中组合数字和模式格式化程序
- 更改组合框分页后,getValue和getRawValue返回相同的值
- 类型错误:url未定义extjs 4正在填充组合框
- 我该如何组合这两个Greasemonkey脚本
- Jqgrid动态组合框填充不起作用
- 如何解决ExtJS 4.1组合框pageSize的bug