Ext Combobox
程序员文章站
2022-07-13 22:37:51
...
Ext.ns("Dma.common");
Dma.common.DmaCommon = Ext.extend(Ext.form.ComboBox, {
check : true,
displayValue : false,
displayAll:true,
valueText : [],
displayText : [],
separator : ',',
hiddenValue : '',
flag : 0,
selectAllTxt : 'SELECT ALL',
hasSelectAll : false,
initComponent : function() {
if (this.check) {
this.tpl = ''
+ '<tpl for=".">'
+ '<div class="x-combo-list-item">'
+ '<input class="x-form-check-wrap" style="border:none;background:none;" type="checkbox" name="combox" {[values.'
+ this.checkField + '?"checked":""' + ']}/>{'
+ this.displayField + '}</div></tpl>';
} else {
this.tpl = '<tpl for="."><div class="x-combo-list-item">{'
+ this.displayField + '}</div></tpl>';
}
Dma.common.DmaCommon.superclass.initComponent.apply(this, arguments);
this.onLoad = this.onLoad.createSequence(function() {
if (this.el) {
var v = this.el.dom.value;
this.el.dom.value = '';
this.el.dom.value = v;
}
});
},
getCheckValue : function() {
if (this.check) {
var rst = [];
var snapshot = this.store.snapshot || this.store.data;
var f = false;
snapshot.each(function(r) {
if (r.get(this.checkField)) {
if (r.get(this.displayField) != this.selectAllTxt) {
rst.push(r.get(this.valueField));
}
} else if(r.get(this.displayField) != this.selectAllTxt){
f = true;
}
}, this);
if(f)
this.hasSelectAll = false;
else
this.hasSelectAll = true;
var temp = rst.join(this.separator);
this.hiddenValue = temp;
return temp;
} else {
this.hiddenValue = this.getValue();
return this.hiddenValue;
}
},
getCheckDisplay : function() {
if (this.check) {
var rst = [];
var val = [];
var snapshot = this.store.snapshot || this.store.data;
var f = false;
snapshot.each(function(r) {
if (r.get(this.checkField)) {
if (r.get(this.displayField) != this.selectAllTxt) {
rst.push(r.get(this.displayField));
val.push(r.get(this.valueField));
}
} else if(r.get(this.displayField) != this.selectAllTxt){
f = true;
}
}, this);
if(f)
this.hasSelectAll = false;
else
this.hasSelectAll = true;
this.hiddenValue = val.join(this.separator);
var temp = rst.join(this.separator);
//this.setRawValue(temp);
return temp;
} else {
this.hiddenValue = this.getValue();
return this.getValue();
}
},