您好我正在尝试在combobox中进行搜索。它正在工作,但只在当前页面中搜索我正在使用搜索分页,我需要在所有页面中搜索而不是当前页面
任何建议
{
xtype: 'combo',
fieldLabel: 'Organization Id',
name: 'company_id',
displayField:'name_en',
valueField:'id',
store: Ext.create('UserApp.store.PicklistList', {
autoLoad: true,
fields: ['id', 'name_en', 'name_se'],
proxy:{
type:'ajax',
api: {
read:'picklist/listitems'
},
reader: {
type: 'json',
root: 'root',
successProperty: 'success'
},
extraParams:{
table :'table_name'
}
}
}),
editable: true,
autoSelect: false,
selectOnFocus:true,
typeAhead:true,
minChars:2,
queryMode: 'local',
mode: 'local',
pageSize: 25,
width:370,
allowOnlyWhitespace: false,
regex: /[a-zA-Z0-9]+/, // avoid to empty data only
})
答案 0 :(得分:0)
您的商店需要设置pagination
您的服务器需要根据从商店代理收到的参数正确处理分页。代理将发送查询字符串参数,如?page=1&start=0&limit=25
,您的服务器只需返回25个(例如)记录和总参数。
{"total":101,"data":[{model data}, {model data}, ...]}
尽管有文档,但是combobox中的pageSize属性实际上是一个布尔值,如果为1或更大则会分页。
答案 1 :(得分:0)
我正在使用带有queryMode的组合框:'remote'并使用combobox进行搜索以进行匹配。我正在进行“包含”搜索 - 这意味着它在结果字符串中的任何位置查找匹配项而不仅仅是开始,并且它不仅在当前页面中而且在整个结果集中搜索值。我正在使用extjs 4.0.7,我通过重写doQuery方法来实现它。
`doQuery:function(queryString,forceAll){ this.expand(); this.store.clearFilter(forceAll!);
if(this.queryMode == 'remote') {
this.store.load({
params: this.getParams(queryString)
});
}
if (!forceAll) {
this.store.filter(this.displayField, new RegExp(Ext.String.escapeRegex(queryString), 'i'));
}
}`