天天看点

EXTJS 实现 combobox动态更改TPL

需求:

界面两个combobox控件,A跟B

A控件的

select

事件加入了,B控件从后台读取数据的方法,后台的数据不是一张表,根据A控件选择的内容(比如:分类)查不同的表,这就导致查出来的表的字段不太一样,有的表示:ABC,有的是CDE。

B控件的

displayExpr

是初始化

config

的时候加上去的,

valueField

也是,所以这两个再A控件的

select

事件中也要一起修改:

A事件:

//获取到B控件

var el=form.get(B);

el.setValue(“”);

//A控件获取到后台的显示值,比如(E,F)

el.displayExpr=record.get('WEB_COLUMNS');  
el.valueField=record.get('VAL_COLUMN');

//一个新的TPL字符串

newTpl= '<tpl for=".">'  
                +'<div class="x-combo-list-item">'    
                +'<img src="' + Ext.BLANK_IMAGE_URL + '" '    
                 +'class="xyz-multicombo-icon xyz-multicombo-icon-'    
                +'{[values.' + el.checkField + '?"checked":"unchecked"' + ']}">'    
                +'<div class="xyz-multicombo-item-text">' + el.getDisplayExpr() + '</div>'    
                 +'</div>'    
                +'</tpl>'    
;

el.tpl = newTpl;  
           
if (el.view) {    
        el.displayTpl = new Ext.Template(el.displayExpr);    
        el.view.tpl = new Ext.XTemplate(newTpl);    
        el.view.refresh();    
}           

复制

参考:https://www.sencha.com/forum/showthread.php?106538-set-tpl-dynamically