- 浏览: 2306932 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (314)
- JAVA基础知识 (54)
- Java-IO/FIle (16)
- Java-JDBC (4)
- JAVA-新增特性-注解 (3)
- Java-枚举 (2)
- Java-泛型 (1)
- Java-多线程 (15)
- Java-XML (4)
- Java-JMS(消息服务) (4)
- Java-JVM (0)
- Web Service服务 (7)
- Jsp (10)
- js (18)
- Struts框架 (11)
- Spring框架 (29)
- Hibernate框架 (28)
- Spring Boot框架 (2)
- ExtJS前端框架 (29)
- Jquery js库 (8)
- JUnit框架 (8)
- Selenium 测试 (1)
- NoSql---Redis (6)
- ORACLE数据库 (45)
- MySQL数据库 (4)
- tomcat (3)
- Nginx反向代理服务器 (4)
- web应用服务器通用知识 (3)
- 开发工具IDE (14)
- UML建模 (1)
- SVN CVS 版本管理 (6)
- git 分布式版本管理 (4)
- 报表设计 (5)
- 文件上传下载 (2)
- 数据算法 (1)
- 存储过程 (5)
- JSON 相关 (1)
- OGNL表达式 (3)
- Util工具包 (9)
- 设计模式 (15)
- linux 相关 (3)
- life think (3)
- 工作流管理框架 (1)
- 大数据-Hadoop (1)
最新评论
-
huih:
很不错的文章
SpringMVC+Hibernate+Spring 简单的一个整合实例 -
calm01:
学习了.
Spring <bean>标签属性 Autowire自动装配(转载) -
lizhenlzlz:
我的也是拦截不了service层
SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)(转载) -
josh_123:
讲的不错,很详细,如果quartz定时任务类采用不继承任何类的 ...
Spring,jdk定时任务的几种实现以及任务线程是串行还是并行执行(转载) -
human_coder:
你知道eclipse调试怎么可以回调吗?有时候总是调快了,不能 ...
Debug---Eclipse断点调试基础
下面介绍MultiComboBox的使用方式,大家先看看下面的代码:
Java代码
- Ext.onReady(function(){
- var formPanel = new Ext.FormPanel({
- height : 100,// 表单面板的高度
- width : 400,// 表单面板的宽度
- labelWidth : 120,// 字段标签宽度
- labelAlign : "right",// 字段标签对齐方式
- fileUpload: true,//支持文件上传
- defaults : {// 默认form元素类型为textfield
- xtype : "textfield",// 默认类型为textfield
- width : 150 // 默认宽度
- },
- items : [{
- xtype:'multicombo',
- width:250,
- store: new Ext.data.SimpleStore({
- fields: ["name","value"],
- data:[['测试菜单1',1],['测试菜单2',2],['测试菜单3',3],['测试菜单4',4]]}),
- valueField :"value",
- displayField: "name",
- labelSeparator:':',
- displaySeparator:';',
- valueSeparator:',',
- mode: 'local',
- value:'1,2',
- forceSelection: true,
- hiddenName:'test',
- editable: true,
- triggerAction: 'all',
- allowBlank:false,
- emptyText:'请选择',
- fieldLabel: '多选下拉ComBo'
- }],
- buttons : [{
- text : '提交',
- type : 'submit',
- handler : function() {
- }
- }]
- });
- formPanel.render("multicombo-div");
- });
- <span class="hilite1">Ext</span>
- .onReady(function(){
- var formPanel = new <span class="hilite1">Ext</span>
- .FormPanel({
- height : 100,// 表单面板的高度
- width : 400,// 表单面板的宽度
- labelWidth : 120,// 字段标签宽度
- labelAlign : "right",// 字段标签对齐方式
- fileUpload: true,//支持文件上传
- defaults : {// 默认form元素类型为textfield
- xtype : "textfield",// 默认类型为textfield
- width : 150 // 默认宽度
- },
- items : [{
- xtype:'multicombo',
- width:250,
- store: new <span class="hilite1">Ext</span>
- .data.SimpleStore({
- fields: ["name","value"],
- data:[['测试菜单1',1],['测试菜单2',2],['测试菜单3',3],['测试菜单4',4]]}),
- valueField :"value",
- displayField: "name",
- labelSeparator:':',
- displaySeparator:';',
- valueSeparator:',',
- mode: 'local',
- value:'1,2',
- forceSelection: true,
- hiddenName:'test',
- editable: true,
- triggerAction: 'all',
- allowBlank:false,
- emptyText:'请选择',
- fieldLabel: '多选下拉ComBo'
- }],
- buttons : [{
- text : '提交',
- type : 'submit',
- handler : function() {
- }
- }]
- });
- formPanel.render("multicombo-div");
- });
Ext
.onReady(function(){
var formPanel = new Ext
.FormPanel({
height : 100,// 表单面板的高度
width : 400,// 表单面板的宽度
labelWidth : 120,// 字段标签宽度
labelAlign : "right",// 字段标签对齐方式
fileUpload: true,//支持文件上传
defaults : {// 默认form元素类型为textfield
xtype : "textfield",// 默认类型为textfield
width : 150 // 默认宽度
},
items : [{
xtype:'multicombo',
width:250,
store: new Ext
.data.SimpleStore({
fields: ["name","value"],
data:[['测试菜单1',1],['测试菜单2',2],['测试菜单3',3],['测试菜单4',4]]}),
valueField :"value",
displayField: "name",
labelSeparator:':',
displaySeparator:';',
valueSeparator:',',
mode: 'local',
value:'1,2',
forceSelection: true,
hiddenName:'test',
editable: true,
triggerAction: 'all',
allowBlank:false,
emptyText:'请选择',
fieldLabel: '多选下拉ComBo'
}],
buttons : [{
text : '提交',
type : 'submit',
handler : function() {
}
}]
});
formPanel.render("multicombo-div");
});
由上面代码可以看到用法大致和ComboBox一样,不相同的地方是:
Java代码
- xtype:'multicombo',//MultiComboBox注册类型名称
- displaySeparator:';',//多选显示分隔字符
- valueSeparator:',',//多选提交到后台的值分隔符
- value:'1,2',// 多值通过","分隔,与valueSeparator相对应,表示默认选择了"测试菜单1'"和"测试菜单2"
- xtype:'multicombo',//MultiComboBox注册类型名称
- displaySeparator:';',//多选显示分隔字符
- valueSeparator:',',//多选提交到后台的值分隔符
- value:'1,2',// 多值通过","分隔,与valueSeparator相对应,表示默认选择了"测试菜单1'"和"测试菜单2"
xtype:'multicombo',//MultiComboBox注册类型名称
displaySeparator:';',//多选显示分隔字符
valueSeparator:',',//多选提交到后台的值分隔符
value:'1,2',// 多值通过","分隔,与valueSeparator相对应,表示默认选择了"测试菜单1'"和"测试菜单2"
由于添加了多选CheckBox图标,所以需要在ext-all.css文件最后添加两行支持样式:
Java代码
- .checked{background-image:url(../images/default/menu/checked.gif)}
- .unchecked{background-image:url(../images/default/menu/unchecked.gif)}
- .checked{background-image:url(../images/default/menu/checked.gif)}
- .unchecked{background-image:url(../images/default/menu/unchecked.gif)}
.checked{background-image:url(../images/default/menu/checked.gif)}
.unchecked{background-image:url(../images/default/menu/unchecked.gif)}
MultiComboBox的源代码:
Java代码
- Ext.form.MultiComboBox = Ext.extend(Ext.form.TriggerField, {
- defaultAutoCreate : {tag: "input", type: "text", size: "24", autocomplete: "off"},
- listClass: '',
- selectedClass: 'x-combo-selected',
- triggerClass : 'x-form-arrow-trigger',
- shadow:'sides',
- listAlign: 'tl-bl?',
- maxHeight: 300,
- triggerAction: 'query',
- minChars : 4,
- typeAhead: false,
- queryDelay: 500,
- pageSize: 0,
- selectOnFocus:false,
- queryParam: 'query',
- loadingText: 'Loading...',
- resizable: false,
- handleHeight : 8,
- editable: true,
- allQuery: '',
- mode: 'remote',
- minListWidth : 70,
- forceSelection:false,
- typeAheadDelay : 250,
- displaySeparator:';',
- valueSeparator:',',
- lazyInit : true,
- initComponent : function(){
- Ext.form.ComboBox.superclass.initComponent.call(this);
- this.addEvents(
- 'expand',
- 'collapse',
- 'beforeselect',
- 'select',
- 'beforequery'
- );
- if(this.transform){
- this.allowDomMove = false;
- var s = Ext.getDom(this.transform);
- if(!this.hiddenName){
- this.hiddenName = s.name;
- }
- if(!this.store){
- this.mode = 'local';
- var d = [], opts = s.options;
- for(var i = 0, len = opts.length;i < len; i++){
- var o = opts[i];
- var value = (Ext.isIE ? o.getAttributeNode('value').specified : o.hasAttribute('value')) ? o.value : o.text;
- if(o.selected) {
- this.value = value;
- }
- d.push([value, o.text]);
- }
- this.store = new Ext.data.SimpleStore({
- 'id': 0,
- fields: ['value', 'text'],
- data : d
- });
- this.valueField = 'value';
- this.displayField = 'text';
- }
- s.name = Ext.id(); // wipe out the name in case somewhere else they have a reference
- if(!this.lazyRender){
- this.target = true;
- this.el = Ext.DomHelper.insertBefore(s, this.autoCreate || this.defaultAutoCreate);
- Ext.removeNode(s); // remove it
- this.render(this.el.parentNode);
- }else{
- Ext.removeNode(s); // remove it
- }
- }
- this.selectedIndex = -1;
- if(this.mode == 'local'){
- if(this.initialConfig.queryDelay === undefined){
- this.queryDelay = 10;
- }
- if(this.initialConfig.minChars === undefined){
- this.minChars = 0;
- }
- }
- },
- // private
- onRender : function(ct, position){
- Ext.form.ComboBox.superclass.onRender.call(this, ct, position);
- var disValue="";
- if(this.hiddenName){
- this.hiddenField = this.el.insertSibling({tag:'input', type:'hidden', name: this.hiddenName, id: (this.hiddenId||this.hiddenName)},
- 'before', true);
- var hvalue=this.hiddenValue !== undefined ? this.hiddenValue :
- this.value !== undefined ? this.value : '';
- var hvalueArray=hvalue.split(this.valueSeparator);
- for(var i=0;i<this.store.data.length;i++){
- var r = this.store.getAt(i);
- var newValue = r.data[this.displayField];
- var v=r.data[this.valueField];
- for(var j=0;j<hvalueArray.length;j++){
- if(hvalueArray[j]==v){
- disValue+=newValue+this.displaySeparator;
- }
- }
- }
- this.hiddenField.value =this.hiddenValue !== undefined ? this.hiddenValue :
- this.value !== undefined ? this.value : '';
- this.el.dom.removeAttribute('name');
- }
- if(Ext.isGecko){
- this.el.dom.setAttribute('autocomplete', 'off');
- }
- if(!this.lazyInit){
- this.initList();
- }else{
- this.on('focus', this.initList, this, {single: true});
- }
- if(!this.editable){
- this.editable = true;
- this.setEditable(false);
- }
- this.setValue(disValue);
- },
- initList : function(){
- if(!this.list){
- var cls = 'x-combo-list';
- this.list = new Ext.Layer({
- shadow: this.shadow, cls: [cls, this.listClass].join(' '), constrain:false
- });
- var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth);
- this.list.setWidth(lw);
- this.list.swallowEvent('mousewheel');
- this.assetHeight = 0;
- if(this.title){
- this.header = this.list.createChild({cls:cls+'-hd', html: this.title});
- this.assetHeight += this.header.getHeight();
- }
- this.innerList = this.list.createChild({cls:cls+'-inner'});
- this.innerList.on('mouseover', this.onViewOver, this);
- this.innerList.on('mousemove', this.onViewMove, this);
- this.innerList.setWidth(lw - this.list.getFrameWidth('lr'))
- if(this.pageSize){
- this.footer = this.list.createChild({cls:cls+'-ft'});
- this.pageTb = new Ext.PagingToolbar({
- store:this.store,
- pageSize: this.pageSize,
- renderTo:this.footer
- });
- this.assetHeight += this.footer.getHeight();
- }
- if(!this.tpl){
- //alert(cls);
- //x-combo-list-item
- this.tpl = '<tpl for="."><div class="'+cls+'-item"><span class="unchecked" id="checkBox_{' + this.displayField + '}"+ width="20"> </span>{' + this.displayField + '}</div></tpl>';
- }
- this.view = new Ext.DataView({
- applyTo: this.innerList,
- tpl: this.tpl,
- singleSelect: true,
- selectedClass: this.selectedClass,
- itemSelector: this.itemSelector || '.' + cls + '-item'
- });
- this.view.on('click', this.onViewClick, this);
- this.bindStore(this.store, true);
- if(this.resizable){
- this.resizer = new Ext.Resizable(this.list, {
- pinned:true, handles:'se'
- });
- this.resizer.on('resize', function(r, w, h){
- this.maxHeight = h-this.handleHeight-this.list.getFrameWidth('tb')-this.assetHeight;
- this.listWidth = w;
- this.innerList.setWidth(w - this.list.getFrameWidth('lr'));
- this.restrictHeight();
- }, this);
- this[this.pageSize?'footer':'innerList'].setStyle('margin-bottom', this.handleHeight+'px');
- }
- }
- },
- bindStore : function(store, initial){
- if(this.store && !initial){
- this.store.un('beforeload', this.onBeforeLoad, this);
- this.store.un('load', this.onLoad, this);
- this.store.un('loadexception', this.collapse, this);
- if(!store){
- this.store = null;
- if(this.view){
- this.view.setStore(null);
- }
- }
- }
- if(store){
- this.store = Ext.StoreMgr.lookup(store);
- this.store.on('beforeload', this.onBeforeLoad, this);
- this.store.on('load', this.onLoad, this);
- this.store.on('loadexception', this.collapse, this);
- if(this.view){
- this.view.setStore(store);
- }
- }
- },
- // private
- initEvents : function(){
- Ext.form.ComboBox.superclass.initEvents.call(this);
- this.keyNav = new Ext.KeyNav(this.el, {
- "up" : function(e){
- this.inKeyMode = true;
- this.selectPrev();
- },
- "down" : function(e){
- if(!this.isExpanded()){
- this.onTriggerClick();
- }else{
- this.inKeyMode = true;
- this.selectNext();
- }
- },
- "enter" : function(e){
- this.onViewClick();
- //return true;
- },
- "esc" : function(e){
- this.collapse();
- },
- "tab" : function(e){
- this.onViewClick(false);
- return true;
- },
- scope : this,
- doRelay : function(foo, bar, hname){
- if(hname == 'down' || this.scope.isExpanded()){
- return Ext.KeyNav.prototype.doRelay.apply(this, arguments);
- }
- return true;
- },
- forceKeyDown : true
- });
- this.queryDelay = Math.max(this.queryDelay || 10,
- this.mode == 'local' ? 10 : 250);
- this.dqTask = new Ext.util.DelayedTask(this.initQuery, this);
- if(this.typeAhead){
- this.taTask = new Ext.util.DelayedTask(this.onTypeAhead, this);
- }
- if(this.editable !== false){
- this.el.on("keyup", this.onKeyUp, this);
- }
- if(this.forceSelection){
- this.on('blur', this.doForce, this);
- }
- },
- onDestroy : function(){
- if(this.view){
- this.view.el.removeAllListeners();
- this.view.el.remove();
- this.view.purgeListeners();
- }
- if(this.list){
- this.list.destroy();
- }
- this.bindStore(null);
- Ext.form.ComboBox.superclass.onDestroy.call(this);
- },
- // private
- fireKey : function(e){
- if(e.isNavKeyPress() && !this.list.isVisible()){
- this.fireEvent("specialkey", this, e);
- }
- },
- // private
- onResize: function(w, h){
- Ext.form.ComboBox.superclass.onResize.apply(this, arguments);
- if(this.list && this.listWidth === undefined){
- var lw = Math.max(w, this.minListWidth);
- this.list.setWidth(lw);
- this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
- }
- },
- // private
- onDisable: function(){
- Ext.form.ComboBox.superclass.onDisable.apply(this, arguments);
- if(this.hiddenField){
- this.hiddenField.disabled = this.disabled;
- }
- },
- setEditable : function(value){
- if(value == this.editable){
- return;
- }
- this.editable = value;
- if(!value){
- this.el.dom.setAttribute('readOnly', true);
- this.el.on('mousedown', this.onTriggerClick, this);
- this.el.addClass('x-combo-noedit');
- }else{
- this.el.dom.setAttribute('readOnly', false);
- this.el.un('mousedown', this.onTriggerClick, this);
- this.el.removeClass('x-combo-noedit');
- }
- },
- // private
- onBeforeLoad : function(){
- if(!this.hasFocus){
- return;
- }
- this.innerList.update(this.loadingText ?
- '<div class="loading-indicator">'+this.loadingText+'</div>' : '');
- this.restrictHeight();
- this.selectedIndex = -1;
- },
- // private
- onLoad : function(){
- if(!this.hasFocus){
- return;
- }
- if(this.store.getCount() > 0){
- this.expand();
- this.restrictHeight();
- if(this.lastQuery == this.allQuery){
- if(this.editable){
- this.el.dom.select();
- }
- if(!this.selectByValue(this.value, true)){
- this.select(0, true);
- }
- }else{
- this.selectNext();
- if(this.typeAhead && this.lastKey != Ext.EventObject.BACKSPACE && this.lastKey != Ext.EventObject.DELETE){
- this.taTask.delay(this.typeAheadDelay);
- }
- }
- }else{
- this.onEmptyResults();
- }
- },
- // private
- onTypeAhead : function(){
- if(this.store.getCount() > 0){
- var r = this.store.getAt(0);
- var newValue = r.data[this.displayField];
- var len = newValue.length;
- var selStart = this.getRawValue().length;
- if(selStart != len){
- this.setRawValue(newValue);
- this.selectText(selStart, newValue.length);
- }
- }
- },
- // private
- onSelect : function(record, index){
- if(this.fireEvent('beforeselect', this, record, index) !== false){
- var r = this.store.getAt(index);
- var newValue = r.data[this.displayField];
- var check=document.getElementById("checkBox_"+newValue);
- if(check.className=="checked"){
- check.className="unchecked"
- }else{
- check.className="checked"
- }
- var value="";
- var hiddenValue="";
- for(var i=0;i<this.store.data.length;i++){
- var r = this.store.getAt(i);
- newValue = r.data[this.displayField];
- check=document.getElementById("checkBox_"+newValue);
- if(check.className=="checked"){
- value+= r.data[this.displayField]+this.displaySeparator;
- hiddenValue+= r.data[this.valueField]+this.valueSeparator;
- }
- }
- if(value.length>1){
- value=value.substring(0,value.length-this.displaySeparator.length);
- }
- if(hiddenValue.length>1){
- hiddenValue=hiddenValue.substring(0,value.length-this.valueSeparator.length);
- }
- this.setValue(value);
- this.hiddenField.value=hiddenValue;
- this.fireEvent('select', this, record, index);
- }
- },
- getValue : function(){
- if(this.valueField){
- return typeof this.value != 'undefined' ? this.value : '';
- }else{
- return Ext.form.ComboBox.superclass.getValue.call(this);
- }
- },
- /**
- * Clears any text/value currently set in the field
- */
- clearValue : function(){
- if(this.hiddenField){
- this.hiddenField.value = '';
- }
- this.setRawValue('');
- this.lastSelectionText = '';
- this.applyEmptyText();
- },
- setValue : function(v){
- var text = v;
- if(this.valueField){
- var r = this.findRecord(this.valueField, v);
- if(r){
- text = r.data[this.displayField];
- }else if(this.valueNotFoundText !== undefined){
- text = this.valueNotFoundText;
- }
- }
- this.lastSelectionText = text;
- Ext.form.ComboBox.superclass.setValue.call(this, text);
- this.value = v;
- },
- // private
- findRecord : function(prop, value){
- var record;
- if(this.store.getCount() > 0){
- this.store.each(function(r){
- if(r.data[prop] == value){
- record = r;
- return false;
- }
- });
- }
- return record;
- },
- // private
- onViewMove : function(e, t){
- this.inKeyMode = false;
- },
- // private
- onViewOver : function(e, t){
- if(this.inKeyMode){ // prevent key nav and mouse over conflicts
- return;
- }
- var item = this.view.findItemFromChild(t);
- if(item){
- var index = this.view.indexOf(item);
- this.select(index, false);
- }
- },
- // private
- onViewClick : function(doFocus){
- var index = this.view.getSelectedIndexes()[0];
- var r = this.store.getAt(index);
- if(r){
- this.onSelect(r, index);
- }
- if(doFocus !== false){
- this.el.focus();
- }
- },
- // private
- restrictHeight : function(){
- this.innerList.dom.style.height = '';
- var inner = this.innerList.dom;
- var fw = this.list.getFrameWidth('tb');
- var h = Math.max(inner.clientHeight, inner.offsetHeight, inner.scrollHeight);
- this.innerList.setHeight(h < this.maxHeight ? 'auto' : this.maxHeight);
- this.list.beginUpdate();
- this.list.setHeight(this.innerList.getHeight()+fw+(this.resizable?this.handleHeight:0)+this.assetHeight);
- this.list.alignTo(this.el, this.listAlign);
- this.list.endUpdate();
- },
- // private
- onEmptyResults : function(){
- this.collapse();
- },
- /**
- * Returns true if the dropdown list is expanded, else false.
- */
- isExpanded : function(){
- return this.list && this.list.isVisible();
- },
- selectByValue : function(v, scrollIntoView){
- if(v !== undefined && v !== null){
- var r = this.findRecord(this.valueField || this.displayField, v);
- if(r){
- this.select(this.store.indexOf(r), scrollIntoView);
- return true;
- }
- }
- return false;
- },
- select : function(index, scrollIntoView){
- this.selectedIndex = index;
- this.view.select(index);
- if(scrollIntoView !== false){
- var el = this.view.getNode(index);
- if(el){
- this.innerList.scrollChildIntoView(el, false);
- }
- }
- },
- // private
- selectNext : function(){
- var ct = this.store.getCount();
- if(ct > 0){
- if(this.selectedIndex == -1){
- this.select(0);
- }else if(this.selectedIndex < ct-1){
- this.select(this.selectedIndex+1);
- }
- }
- },
- // private
- selectPrev : function(){
- var ct = this.store.getCount();
- if(ct > 0){
- if(this.selectedIndex == -1){
- this.select(0);
- }else if(this.selectedIndex != 0){
- this.select(this.selectedIndex-1);
- }
- }
- },
- // private
- onKeyUp : function(e){
- if(this.editable !== false && !e.isSpecialKey()){
- this.lastKey = e.getKey();
- this.dqTask.delay(this.queryDelay);
- }
- },
- // private
- validateBlur : function(){
- return !this.list || !this.list.isVisible();
- },
- // private
- initQuery : function(){
- this.doQuery(this.getRawValue());
- },
- // private
- doForce : function(){
- if(this.el.dom.value.length > 0){
- this.el.dom.value =
- this.lastSelectionText === undefined ? '' : this.lastSelectionText;
- this.applyEmptyText();
- }
- },
- doQuery : function(q, forceAll){
- if(q === undefined || q === null){
- q = '';
- }
- var qe = {
- query: q,
- forceAll: forceAll,
- combo: this,
- cancel:false
- };
- if(this.fireEvent('beforequery', qe)===false || qe.cancel){
- return false;
- }
- q = qe.query;
- forceAll = qe.forceAll;
- if(forceAll === true || (q.length >= this.minChars)){
- if(this.lastQuery !== q){
- this.lastQuery = q;
- if(this.mode == 'local'){
- this.selectedIndex = -1;
- if(forceAll){
- this.store.clearFilter();
- }else{
- this.store.filter(this.displayField, q);
- }
- this.onLoad();
- }else{
- this.store.baseParams[this.queryParam] = q;
- this.store.load({
- params: this.getParams(q)
- });
- this.expand();
- }
- }else{
- this.selectedIndex = -1;
- this.onLoad();
- }
- }
- },
- // private
- getParams : function(q){
- var p = {};
- //p[this.queryParam] = q;
- if(this.pageSize){
- p.start = 0;
- p.limit = this.pageSize;
- }
- return p;
- },
- /**
- * Hides the dropdown list if it is currently expanded. Fires the 'collapse' event on completion.
- */
- collapse : function(){
- if(!this.isExpanded()){
- return;
- }
- this.list.hide();
- Ext.getDoc().un('mousewheel', this.collapseIf, this);
- Ext.getDoc().un('mousedown', this.collapseIf, this);
- this.fireEvent('collapse', this);
- },
- // private
- collapseIf : function(e){
- if(!e.within(this.wrap) && !e.within(this.list)){
- this.collapse();
- }
- },
- /**
- * Expands the dropdown list if it is currently hidden. Fires the 'expand' event on completion.
- */
- expand : function(){
- if(this.isExpanded() || !this.hasFocus){
- return;
- }
- this.list.alignTo(this.wrap, this.listAlign);
- var hvalueArray=this.hiddenField.value.split(this.valueSeparator);
- for(var i=0;i<this.store.data.length;i++){
- var r = this.store.getAt(i);
- var newValue = r.data[this.displayField];
- var v=r.data[this.valueField];
- for(var j=0;j<hvalueArray.length;j++){
- if(hvalueArray[j]==v){
- document.getElementById("checkBox_"+newValue).className="checked";
- }
- }
- }
- this.list.show();
- Ext.getDoc().on('mousewheel', this.collapseIf, this);
- Ext.getDoc().on('mousedown', this.collapseIf, this);
- this.fireEvent('expand', this);
- },
- // private
- // Implements the default empty TriggerField.onTriggerClick function
- onTriggerClick : function(){
- if(this.disabled){
- return;
- }
- if(this.isExpanded()){
- this.collapse();
- this.el.focus();
- }else {
- this.onFocus({});
- if(this.triggerAction == 'all') {
- this.doQuery(this.allQuery, true);
- } else {
- this.doQuery(this.getRawValue());
- }
- this.el.focus();
- }
- }
- });
- Ext.reg('multicombo', Ext.form.MultiComboBox);
- <span class="hilite1">Ext</span>
- .form.MultiComboBox = <span class="hilite1">Ext</span>
- .extend(<span class="hilite1">Ext</span>
- .form.TriggerField, {
- defaultAutoCreate : {tag: "input", type: "text", size: "24", autocomplete: "off"},
- listClass: '',
- selectedClass: 'x-combo-selected',
- triggerClass : 'x-form-arrow-trigger',
- shadow:'sides',
- listAlign: 'tl-bl?',
- maxHeight: 300,
- triggerAction: 'query',
- minChars : 4,
- typeAhead: false,
- queryDelay: 500,
- pageSize: 0,
- selectOnFocus:false,
- queryParam: 'query',
- loadingText: 'Loading...',
- resizable: false,
- handleHeight : 8,
- editable: true,
- allQuery: '',
- mode: 'remote',
- minListWidth : 70,
- forceSelection:false,
- typeAheadDelay : 250,
- displaySeparator:';',
- valueSeparator:',',
- lazyInit : true,
- initComponent : function(){
- <span class="hilite1">Ext</span>
- .form.ComboBox.superclass.initComponent.call(this);
- this.addEvents(
- 'expand',
- 'collapse',
- 'beforeselect',
- 'select',
- 'beforequery'
- );
- if(this.transform){
- this.allowDomMove = false;
- var s = <span class="hilite1">Ext</span>
- .getDom(this.transform);
- if(!this.hiddenName){
- this.hiddenName = s.name;
- }
- if(!this.store){
- this.mode = 'local';
- var d = [], opts = s.options;
- for(var i = 0, len = opts.length;i < len; i++){
- var o = opts[i];
- var value = (<span class="hilite1">Ext</span>
- .isIE ? o.getAttributeNode('value').specified : o.hasAttribute('value')) ? o.value : o.text;
- if(o.selected) {
- this.value = value;
- }
- d.push([value, o.text]);
- }
- this.store = new <span class="hilite1">Ext</span>
- .data.SimpleStore({
- 'id': 0,
- fields: ['value', 'text'],
- data : d
- });
- this.valueField = 'value';
- this.displayField = 'text';
- }
- s.name = <span class="hilite1">Ext</span>
- .id(); // wipe out the name in case somewhere else they have a reference
- if(!this.lazyRender){
- this.target = true;
- this.el = <span class="hilite1">Ext</span>
- .DomHelper.insertBefore(s, this.autoCreate || this.defaultAutoCreate);
- <span class="hilite1">Ext</span>
- .removeNode(s); // remove it
- this.render(this.el.parentNode);
- }else{
- <span class="hilite1">Ext</span>
- .removeNode(s); // remove it
- }
- }
- this.selectedIndex = -1;
- if(this.mode == 'local'){
- if(this.initialConfig.queryDelay === undefined){
- this.queryDelay = 10;
- }
- if(this.initialConfig.minChars === undefined){
- this.minChars = 0;
- }
- }
- },
- // private
- onRender : function(ct, position){
- <span class="hilite1">Ext</span>
- .form.ComboBox.superclass.onRender.call(this, ct, position);
- var disValue="";
- if(this.hiddenName){
- this.hiddenField = this.el.insertSibling({tag:'input', type:'hidden', name: this.hiddenName, id: (this.hiddenId||this.hiddenName)},
- 'before', true);
- var hvalue=this.hiddenValue !== undefined ? this.hiddenValue :
- this.value !== undefined ? this.value : '';
- var hvalueArray=hvalue.split(this.valueSeparator);
- for(var i=0;i<this.store.data.length;i++){
- var r = this.store.getAt(i);
- var newValue = r.data[this.displayField];
- var v=r.data[this.valueField];
- for(var j=0;j<hvalueArray.length;j++){
- if(hvalueArray[j]==v){
- disValue+=newValue+this.displaySeparator;
- }
- }
- }
- this.hiddenField.value =this.hiddenValue !== undefined ? this.hiddenValue :
- this.value !== undefined ? this.value : '';
- this.el.dom.removeAttribute('name');
- }
- if(<span class="hilite1">Ext</span>
- .isGecko){
- this.el.dom.setAttribute('autocomplete', 'off');
- }
- if(!this.lazyInit){
- this.initList();
- }else{
- this.on('focus', this.initList, this, {single: true});
- }
- if(!this.editable){
- this.editable = true;
- this.setEditable(false);
- }
- this.setValue(disValue);
- },
- initList : function(){
- if(!this.list){
- var cls = 'x-combo-list';
- this.list = new <span class="hilite1">Ext</span>
- .Layer({
- shadow: this.shadow, cls: [cls, this.listClass].join(' '), constrain:false
- });
- var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth);
- this.list.setWidth(lw);
- this.list.swallowEvent('mousewheel');
- this.assetHeight = 0;
- if(this.title){
- this.header = this.list.createChild({cls:cls+'-hd', html: this.title});
- this.assetHeight += this.header.getHeight();
- }
- this.innerList = this.list.createChild({cls:cls+'-inner'});
- this.innerList.on('mouseover', this.onViewOver, this);
- this.innerList.on('mousemove', this.onViewMove, this);
- this.innerList.setWidth(lw - this.list.getFrameWidth('lr'))
- if(this.pageSize){
- this.footer = this.list.createChild({cls:cls+'-ft'});
- this.pageTb = new <span class="hilite1">Ext</span>
- .PagingToolbar({
- store:this.store,
- pageSize: this.pageSize,
- renderTo:this.footer
- });
- this.assetHeight += this.footer.getHeight();
- }
- if(!this.tpl){
- //alert(cls);
- //x-combo-list-item
- this.tpl = '<tpl for="."><div class="'+cls+'-item"><span class="unchecked" id="checkBox_{' + this.displayField + '}"+ width="20"> </span>{' + this.displayField + '}</div></tpl>';
- }
- this.view = new <span class="hilite1">Ext</span>
- .DataView({
- applyTo: this.innerList,
- tpl: this.tpl,
- singleSelect: true,
- selectedClass: this.selectedClass,
- itemSelector: this.itemSelector || '.' + cls + '-item'
- });
- this.view.on('click', this.onViewClick, this);
- this.bindStore(this.store, true);
- if(this.resizable){
- this.resizer = new <span class="hilite1">Ext</span>
- .Resizable(this.list, {
- pinned:true, handles:'se'
- });
- this.resizer.on('resize', function(r, w, h){
- this.maxHeight = h-this.handleHeight-this.list.getFrameWidth('tb')-this.assetHeight;
- this.listWidth = w;
- this.innerList.setWidth(w - this.list.getFrameWidth('lr'));
- this.restrictHeight();
- }, this);
- this[this.pageSize?'footer':'innerList'].setStyle('margin-bottom', this.handleHeight+'px');
- }
- }
- },
- bindStore : function(store, initial){
- if(this.store && !initial){
- this.store.un('beforeload', this.onBeforeLoad, this);
- this.store.un('load', this.onLoad, this);
- this.store.un('loadexception', this.collapse, this);
- if(!store){
- this.store = null;
- if(this.view){
- this.view.setStore(null);
- }
- }
- }
- if(store){
- this.store = <span class="hilite1">Ext</span>
- .StoreMgr.lookup(store);
- this.store.on('beforeload', this.onBeforeLoad, this);
- this.store.on('load', this.onLoad, this);
- this.store.on('loadexception', this.collapse, this);
- if(this.view){
- this.view.setStore(store);
- }
- }
- },
- // private
- initEvents : function(){
- <span class="hilite1">Ext</span>
- .form.ComboBox.superclass.initEvents.call(this);
- this.keyNav = new <span class="hilite1">Ext</span>
- .KeyNav(this.el, {
- "up" : function(e){
- this.inKeyMode = true;
- this.selectPrev();
- },
- "down" : function(e){
- if(!this.isExpanded()){
- this.onTriggerClick();
- }else{
- this.inKeyMode = true;
- this.selectNext();
- }
- },
- "enter" : function(e){
- this.onViewClick();
- //return true;
- },
- "esc" : function(e){
- this.collapse();
- },
- "tab" : function(e){
- this.onViewClick(false);
- return true;
- },
- scope : this,
- doRelay : function(foo, bar, hname){
- if(hname == 'down' || this.scope.isExpanded()){
- return <span class="hilite1">Ext</span>
- .KeyNav.prototype.doRelay.apply(this, arguments);
- }
- return true;
- },
- forceKeyDown : true
- });
- this.queryDelay = Math.max(this.queryDelay || 10,
- this.mode == 'local' ? 10 : 250);
- this.dqTask = new <span class="hilite1">Ext</span>
- .util.DelayedTask(this.initQuery, this);
- if(this.typeAhead){
- this.taTask = new <span class="hilite1">Ext</span>
- .util.DelayedTask(this.onTypeAhead, this);
- }
- if(this.editable !== false){
- this.el.on("keyup", this.onKeyUp, this);
- }
- if(this.forceSelection){
- this.on('blur', this.doForce, this);
- }
- },
- onDestroy : function(){
- if(this.view){
- this.view.el.removeAllListeners();
- this.view.el.remove();
- this.view.purgeListeners();
- }
- if(this.list){
- this.list.destroy();
- }
- this.bindStore(null);
- <span class="hilite1">Ext</span>
- .form.ComboBox.superclass.onDestroy.call(this);
- },
- // private
- fireKey : function(e){
- if(e.isNavKeyPress() && !this.list.isVisible()){
- this.fireEvent("specialkey", this, e);
- }
- },
- // private
- onResize: function(w, h){
- <span class="hilite1">Ext</span>
- .form.ComboBox.superclass.onResize.apply(this, arguments);
- if(this.list && this.listWidth === undefined){
- var lw = Math.max(w, this.minListWidth);
- this.list.setWidth(lw);
- this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
- }
- },
- // private
- onDisable: function(){
- <span class="hilite1">Ext</span>
- .form.ComboBox.superclass.onDisable.apply(this, arguments);
- if(this.hiddenField){
- this.hiddenField.disabled = this.disabled;
- }
- },
- setEditable : function(value){
- if(value == this.editable){
- return;
- }
- this.editable = value;
- if(!value){
- this.el.dom.setAttribute('readOnly', true);
- this.el.on('mousedown', this.onTriggerClick, this);
- this.el.addClass('x-combo-noedit');
- }else{
- this.el.dom.setAttribute('readOnly', false);
- this.el.un('mousedown', this.onTriggerClick, this);
- this.el.removeClass('x-combo-noedit');
- }
- },
- // private
- onBeforeLoad : function(){
- if(!this.hasFocus){
- return;
- }
- this.innerList.update(this.loadingText ?
- '<div class="loading-indicator">'+this.loadingText+'</div>' : '');
- this.restrictHeight();
- this.selectedIndex = -1;
- },
- // private
- onLoad : function(){
- if(!this.hasFocus){
- return;
- }
- if(this.store.getCount() > 0){
- this.expand();
- this.restrictHeight();
- if(this.lastQuery == this.allQuery){
- if(this.editable){
- this.el.dom.select();
- }
- if(!this.selectByValue(this.value, true)){
- this.select(0, true);
- }
- }else{
- this.selectNext();
- if(this.typeAhead && this.lastKey != <span class="hilite1">Ext</span>
- .EventObject.BACKSPACE && this.lastKey != <span class="hilite1">Ext</span>
- .EventObject.DELETE){
- this.taTask.delay(this.typeAheadDelay);
- }
- }
- }else{
- this.onEmptyResults();
- }
- },
- // private
- onTypeAhead : function(){
- if(this.store.getCount() > 0){
- var r = this.store.getAt(0);
- var newValue = r.data[this.displayField];
- var len = newValue.length;
- var selStart = this.getRawValue().length;
- if(selStart != len){
- this.setRawValue(newValue);
- this.selectText(selStart, newValue.length);
- }
- }
- },
- // private
- onSelect : function(record, index){
- if(this.fireEvent('beforeselect', this, record, index) !== false){
- var r = this.store.getAt(index);
- var newValue = r.data[this.displayField];
- var check=document.getElementById("checkBox_"+newValue);
- if(check.className=="checked"){
- check.className="unchecked"
- }else{
- check.className="checked"
- }
- var value="";
- var hiddenValue="";
- for(var i=0;i<this.store.data.length;i++){
- var r = this.store.getAt(i);
- newValue = r.data[this.displayField];
- check=document.getElementById("checkBox_"+newValue);
- if(check.className=="checked"){
- value+= r.data[this.displayField]+this.displaySeparator;
- hiddenValue+= r.data[this.valueField]+this.valueSeparator;
- }
- }
- if(value.length>1){
- value=value.substring(0,value.length-this.displaySeparator.length);
- }
- if(hiddenValue.length>1){
- hiddenValue=hiddenValue.substring(0,value.length-this.valueSeparator.length);
- }
- this.setValue(value);
- this.hiddenField.value=hiddenValue;
- this.fireEvent('select', this, record, index);
- }
- },
- getValue : function(){
- if(this.valueField){
- return typeof this.value != 'undefined' ? this.value : '';
- }else{
- return <span class="hilite1">Ext</span>
- .form.ComboBox.superclass.getValue.call(this);
- }
- },
- /**
- * Clears any text/value currently set in the field
- */
- clearValue : function(){
- if(this.hiddenField){
- this.hiddenField.value = '';
- }
- this.setRawValue('');
- this.lastSelectionText = '';
- this.applyEmptyText();
- },
- setValue : function(v){
- var text = v;
- if(this.valueField){
- var r = this.findRecord(this.valueField, v);
- if(r){
- text = r.data[this.displayField];
- }else if(this.valueNotFoundText !== undefined){
- text = this.valueNotFoundText;
- }
- }
- this.lastSelectionText = text;
- <span class="hilite1">Ext</span>
- .form.ComboBox.superclass.setValue.call(this, text);
- this.value = v;
- },
- // private
- findRecord : function(prop, value){
- var record;
- if(this.store.getCount() > 0){
- this.store.each(function(r){
- if(r.data[prop] == value){
- record = r;
- return false;
- }
- });
- }
- return record;
- },
- // private
- onViewMove : function(e, t){
- this.inKeyMode = false;
- },
- // private
- onViewOver : function(e, t){
- if(this.inKeyMode){ // prevent key nav and mouse over conflicts
- return;
- }
- var item = this.view.findItemFromChild(t);
- if(item){
- var index = this.view.indexOf(item);
- this.select(index, false);
- }
- },
- // private
- onViewClick : function(doFocus){
- var index = this.view.getSelectedIndexes()[0];
- var r = this.store.getAt(index);
- if(r){
- this.onSelect(r, index);
- }
- if(doFocus !== false){
- this.el.focus();
- }
- },
- // private
- restrictHeight : function(){
- this.innerList.dom.style.height = '';
- var inner = this.innerList.dom;
- var fw = this.list.getFrameWidth('tb');
- var h = Math.max(inner.clientHeight, inner.offsetHeight, inner.scrollHeight);
- this.innerList.setHeight(h < this.maxHeight ? 'auto' : this.maxHeight);
- this.list.beginUpdate();
- this.list.setHeight(this.innerList.getHeight()+fw+(this.resizable?this.handleHeight:0)+this.assetHeight);
- this.list.alignTo(this.el, this.listAlign);
- this.list.endUpdate();
- },
- // private
- onEmptyResults : function(){
- this.collapse();
- },
- /**
- * Returns true if the dropdown list is expanded, else false.
- */
- isExpanded : function(){
- return this.list && this.list.isVisible();
- },
- selectByValue : function(v, scrollIntoView){
- if(v !== undefined && v !== null){
- var r = this.findRecord(this.valueField || this.displayField, v);
- if(r){
- this.select(this.store.indexOf(r), scrollIntoView);
- return true;
- }
- }
- return false;
- },
- select : function(index, scrollIntoView){
- this.selectedIndex = index;
- this.view.select(index);
- if(scrollIntoView !== false){
- var el = this.view.getNode(index);
- if(el){
- this.innerList.scrollChildIntoView(el, false);
- }
- }
- },
- // private
- selectNext : function(){
- var ct = this.store.getCount();
- if(ct > 0){
- if(this.selectedIndex == -1){
- this.select(0);
- }else if(this.selectedIndex < ct-1){
- this.select(this.selectedIndex+1);
- }
- }
- },
- // private
- selectPrev : function(){
- var ct = this.store.getCount();
- if(ct > 0){
- if(this.selectedIndex == -1){
- this.select(0);
- }else if(this.selectedIndex != 0){
- this.select(this.selectedIndex-1);
- }
- }
- },
- // private
- onKeyUp : function(e){
- if(this.editable !== false && !e.isSpecialKey()){
- this.lastKey = e.getKey();
- this.dqTask.delay(this.queryDelay);
- }
- },
- // private
- validateBlur : function(){
- return !this.list || !this.list.isVisible();
- },
- // private
- initQuery : function(){
- this.doQuery(this.getRawValue());
- },
- // private
- doForce : function(){
- if(this.el.dom.value.length > 0){
- this.el.dom.value =
- this.lastSelectionText === undefined ? '' : this.lastSelectionText;
- this.applyEmptyText();
- }
- },
- doQuery : function(q, forceAll){
- if(q === undefined || q === null){
- q = '';
- }
- var qe = {
- query: q,
- forceAll: forceAll,
- combo: this,
- cancel:false
- };
- if(this.fireEvent('beforequery', qe)===false || qe.cancel){
- return false;
- }
- q = qe.query;
- forceAll = qe.forceAll;
- if(forceAll === true || (q.length >= this.minChars)){
- if(this.lastQuery !== q){
- this.lastQuery = q;
- if(this.mode == 'local'){
- this.selectedIndex = -1;
- if(forceAll){
- this.store.clearFilter();
- }else{
- this.store.filter(this.displayField, q);
- }
- this.onLoad();
- }else{
- this.store.baseParams[this.queryParam] = q;
- this.store.load({
- params: this.getParams(q)
- });
- this.expand();
- }
- }else{
- this.selectedIndex = -1;
- this.onLoad();
- }
- }
- },
- // private
- getParams : function(q){
- var p = {};
- //p[this.queryParam] = q;
- if(this.pageSize){
- p.start = 0;
- p.limit = this.pageSize;
- }
- return p;
- },
- /**
- * Hides the dropdown list if it is currently expanded. Fires the 'collapse' event on completion.
- */
- collapse : function(){
- if(!this.isExpanded()){
- return;
- }
- this.list.hide();
- <span class="hilite1">Ext</span>
- .getDoc().un('mousewheel', this.collapseIf, this);
- <span class="hilite1">Ext</span>
- .getDoc().un('mousedown', this.collapseIf, this);
- this.fireEvent('collapse', this);
- },
- // private
- collapseIf : function(e){
- if(!e.within(this.wrap) && !e.within(this.list)){
- this.collapse();
- }
- },
- /**
- * Expands the dropdown list if it is currently hidden. Fires the 'expand' event on completion.
- */
- expand : function(){
- if(this.isExpanded() || !this.hasFocus){
- return;
- }
- this.list.alignTo(this.wrap, this.listAlign);
- var hvalueArray=this.hiddenField.value.split(this.valueSeparator);
- for(var i=0;i<this.store.data.length;i++){
- var r = this.store.getAt(i);
- var newValue = r.data[this.displayField];
- var v=r.data[this.valueField];
- for(var j=0;j<hvalueArray.length;j++){
- if(hvalueArray[j]==v){
- document.getElementById("checkBox_"+newValue).className="checked";
- }
- }
- }
- this.list.show();
- <span class="hilite1">Ext</span>
- .getDoc().on('mousewheel', this.collapseIf, this);
- <span class="hilite1">Ext</span>
- .getDoc().on('mousedown', this.collapseIf, this);
- this.fireEvent('expand', this);
- },
- // private
- // Implements the default empty TriggerField.onTriggerClick function
- onTriggerClick : function(){
- if(this.disabled){
- return;
- }
- if(this.isExpanded()){
- this.collapse();
- this.el.focus();
- }else {
- this.onFocus({});
- if(this.triggerAction == 'all') {
- this.doQuery(this.allQuery, true);
- } else {
- this.doQuery(this.getRawValue());
- }
- this.el.focus();
- }
- }
- });
- <span class="hilite1">Ext</span>
- .reg('multicombo', <span class="hilite1">Ext</span>
- .form.MultiComboBox);
ext-all.css文件最后添加两行支持样式:
1.checked{background-image:url(../images/default/menu/checked.gif)}
2.unchecked{background-image:url(../images/default/menu/unchecked.gif)}
发表评论
-
EXT弹出窗口(转载)
2015-02-26 16:56 3170Ext.MessageBox.alert() Ext.Me ... -
Extjs教程_第六章_Editor_Grids(可编辑表格) (转载)
2015-02-15 16:04 6174在之前的一章中我 ... -
extJs 2.1学习笔记(Ext.Updater篇二) (转载)
2015-02-15 15:13 1298原文地址:http://blog.csdn.net/huo ... -
三大主流浏览器Web开发工具(转载)
2015-02-03 14:55 2752一个快速加载网页在很大程度上节约用户的浏览页面时间成本,作 ... -
ext+struts2排除List泛型中不想封装的属性(转载)
2015-02-02 18:10 1389struts2封装json,排除不想封装的字段配置,减少网 ... -
Ext Store Filter的实现和问题(转)
2014-01-26 14:33 6601Store包含两个数据缓存 - snapshot和data ... -
ExtJs之Ext.data.Store详解(转载)
2014-01-26 10:31 61846Ext.data.Store是EXT中用来进行数据交换和数据 ... -
Ext Grid表格导出excel
2013-08-22 16:10 4568两种方法,这是一种 ... -
ext中屏蔽backsapce删除时退出的代码
2012-07-31 11:37 1583<script type="text/java ... -
Ext 布局的一些配置属性
2012-07-10 16:48 1522布局配置中,layout和itmes是常用的,通过layout ... -
Ext CardLayout,AnchorLayout,AbsoulteLayout,FormLayout,ColumnLayout,TableLayout
2012-07-10 16:29 18841,CardLayout可以看做一叠卡片,是实现操作向导的典型 ... -
Ext AccordionLayout 布局
2012-07-10 15:58 1496Accordion布局类似于QQ中的伸缩菜单,通过点击可以折叠 ... -
Ext BorderLayout 布局
2012-07-10 11:59 2026BorderLayout布局比fit布局 ... -
Ext FitLayout 布局
2012-07-10 11:37 1204fit布局将使得组件自适应,子面板自动填充整个组件所占范围,不 ... -
Extjs的布局--学习(有例子)(转载)
2012-07-03 17:39 6319所谓布局就是指容器组件中子元素的分布、排列组合方式。Ext的所 ... -
Ext.query()和Ext.get()的区别,Ext.query()类似于jquery的DOM选择器
2012-07-03 17:02 2656Ext.get() 和 Ext.query() 取 ... -
Ext组件ComboBox 中getValue()和getRawValue()的区别
2012-06-29 10:04 6771当把Ext.form.ComboBox 的editable 设 ... -
ExtJs页面布局详解
2012-06-20 16:29 6436EXT标准布局类 面板相当于一张干净的白纸,如果直接在上 ... -
Extjs xtype 一览表
2012-02-09 16:10 23986ExtJs xtype一览 基本组件: ... -
Ext中的get、getDom、getCmp、getBody、getDoc的区别 (转)
2012-02-02 16:28 1761Ext 中包含了几个以 get 开头的方法,这些方法 ...
相关推荐
"ext多选下拉列表的全选功能实现"这个主题聚焦于一个特定的UI组件——ExtJS库中的MultiComboBox,这是一种允许用户多选的下拉列表控件。在实际应用中,全选功能常常被用来快速选择所有选项,极大地提高了用户的操作...
强大的Ext单多选下拉列表控件;基于 LovCombo ; * 作者:中国.湖南.长沙.任文敏 * * 功能: * 1. 支持:★ 多选|单选 (isSingle:'N|Y') * 2. 多选支持: 全选/全不选 * 3. ★ 多选且分页支持: 全部清除 * 4...
"ext下拉多选组件multicombo"是一种专为EXTJS框架设计的组件,EXTJS是一个强大的JavaScript库,用于创建桌面级的富客户端应用。这个组件扩展了EXTJS的原生下拉框(ComboBox)功能,增加了多选特性,使得用户可以在下...
在ExtJS4中,多选下拉树(Multi Select Tree)是一种用户界面组件,它结合了下拉菜单和树形结构,允许用户从层级结构中选择多个项目。这个组件在数据管理、分类选择等场景中非常实用。 在实现多选下拉树时,我们...
EXT3.2 多选下拉框是一种在EXT JS框架中实现的用户界面组件,它允许用户在下拉菜单中选择多个选项。EXT JS是一个基于JavaScript的富客户端应用开发框架,用于构建桌面级的Web应用。EXT3.2是EXT JS的一个版本,尽管...
在EXTJS中,ComboBox是基于Ext.form.field.ComboBox类创建的,通常用于显示一个可搜索的下拉列表。多选功能则是通过扩展ComboBox的基本行为来实现的。这可能涉及到监听用户的交互事件,如点击或键盘操作,以及处理...
下拉树(Dropdown Tree)是Ext JS中的一种特殊控件,它结合了下拉列表和树结构的功能,通常用于展示层次化的数据,并让用户从中选择一个或多个项。 下拉树的基本结构由两部分组成:一个文本框和一个关联的下拉面板...
在给定的标题“Ext ComboBox 下拉多选框带搜索功能”中,我们关注的是一个特别的ComboBox实现,它不仅允许用户从下拉列表中选择多个选项,还具备搜索功能,使得用户可以更高效地找到他们想要的选择项。 ComboBox在...
在Ext JS这个强大的JavaScript框架中,多选下拉框(Multi Select ComboBox)是一种常见的组件,用于提供用户在多个选项中进行选择的功能。这种组件在数据输入、筛选或配置设置等场景中非常实用。本篇文章将深入探讨...
Extjs 模拟下拉多选checkbox
在"ext多选下拉框(代码及例子)"这个主题中,主要涉及到的知识点有: 1. **EXTJS的Combo组件**:Combo是EXTJS中的一种表单组件,它提供了下拉列表的功能,可以用于输入或者选择数据。它既可以作为单选也可以作为...
在ExtJS中,"下拉多选树"(Combobox Tree)是一种结合了下拉框和树形结构的组件,它允许用户在下拉菜单中选择多个树节点,提供了一种高效且直观的用户交互方式。 1. **下拉树组件**:在ExtJS中,树形组件...
这种组件在数据选择上非常实用,尤其当数据层级关系复杂时,可以方便地进行多选或单选操作。下面我们将深入探讨ComboboxTree的实现原理、主要功能以及如何在实际项目中应用。 1. **ComboboxTree的基本概念** ...
EXT 多选是一种在网页应用中常见的用户交互功能,它允许用户在一组选项中选择多个条目。EXT 是一个基于 JavaScript 的富客户端框架,由 Sencha 公司开发,主要用于构建复杂的、数据驱动的 Web 应用程序。EXT 提供了...
在EXT框架中,"多选下拉框"是一种常见的组件,它允许用户在下拉列表中选择多个选项,而不是仅限于单选。 在EXT中实现多选下拉框,主要涉及到EXT的`ComboBox`组件和`multiSelect`配置项。`ComboBox`是一个灵活的输入...
在ExtJS 3中,多选下拉框(LovCombo)是一种复合组件,它结合了下拉列表和“爱好者选择”(LOV,Lookup Value)的功能,允许用户在多个选项中进行复选选择。在Web应用中,这种组件常用于数据输入,特别是在数据库...
- `store`:用于存储下拉选项的数据源,可以是数组或Ext.data.Store对象。 2. **多选事件处理**: - `select`事件:在多选模式下,当用户添加或移除选项时,这个事件会被触发。我们需要监听此事件来处理值的改变...
"Ext 带多选的Tree"指的是在EXT JS的Tree组件中集成了多选功能,允许用户通过复选框来选择多个树节点,从而实现批量操作或者进行多级数据的选择。 在EXT JS中,Tree组件通常是通过`Ext.tree.Panel`类创建的,它提供...
ExtJS社区提供了很多插件,如`Ext.ux.MultiSelect`,可以帮助实现多选下拉框功能,减轻开发负担。如果`MultiComboBox.js`是这样的一个插件,那么它可能封装了上述功能并提供了一些额外的特性,如拖放排序、搜索过滤...