在日常需求中,可能会遇到,同一个Combobox组件,多种的显示情况。
比如可能根据其中的某些栏位,下拉列表中的值有所区别。
目前碰到一个需求,需要显示活跃的产品,另外一处显示全部产品。
为了增加可用性,决定重写Combobox类,增加参数开关,可以随意设定。
实现方法:
Modules.PorudctListCombo = Ext.extend(Ext.form.ComboBox, {
active : false, //新增的参数
store : ProductStore,
fieldLabel :'ttttt',
displayField : 'label',
valueField : 'code',
triggerAction : 'all',
forceSelection : true,
selectOnFocus : true,
typeAhead : true,
mode : 'local',
lastQuery: '',
initComponent : function(){ //重写此方法
if(this.active){
var records = [];
this.store.each(function(r){
records.push(r.copy());
});
var clonestore = new Ext.data.Store({
recordType: this.store.recordType
});
clonestore.add(records);
clonestore.clearFilter();
clonestore.filterBy(function(r){ //进行值的过滤
return r.get('start') <= new Date() && r.get('status')=='ACTIVE';
});
this.store =clonestore; //值赋给combobox
}
Modules.ProductListCombo.superclass.initComponent.call(this);
}
});
使用的时候,只要设定active true or false即可。
或者,active参数作为数组,这样就可以自由定义哪个栏位进行过滤了。
在此就不详述了。
本文介绍了一个自定义的ComboBox组件,该组件可以根据是否显示活跃状态来动态过滤显示的产品列表。通过扩展Ext.form.ComboBox类并增加一个名为active的参数,实现了根据当前设置过滤下拉列表中的项目。
1960

被折叠的 条评论
为什么被折叠?



