- 浏览: 818074 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuhanwm910731:
我现在需要实现复选(非级联选择)的树形下拉菜单,麻烦发给我一份 ...
extjs3.X支持树型的下拉控件 -
shine1200:
“所以咱们现在设置的虚拟路径“/message/upload/ ...
weblogic虚拟路径的配置和使用(2) -
icefireforest:
Fangrn 写道jx_dream 写道楼主,我最近在做树形下 ...
extjs3.X支持树型的下拉控件 -
cloudfile:
谢谢分享!
c++库c#调用开发时需要注意的一点 -
xuweilinbegin:
我也要一份哦:xuweilin15353@163.com,谢谢 ...
extjs3.X支持树型的下拉控件
有些业务处理我们不能一步做完,所以我们希望实现一个类似于setup安装向导的控件,在ext官方的论坛上找到一个,但是只支持extjs2.×,下边的这个控件是在extjs3.×上做的
Ext.layout.UXCardLayout=Ext.extend(Ext.layout.CardLayout,{setActiveItem:function(item){ item=this.container.getComponent(item); if(this.activeItem!=item){ if(this.activeItem){ this.activeItem.hide(); } if(this.activeItem&&!this.activeItem.hidden){ return ; } this.activeItem=item; item.show(); this.layout(); } }}); Ext.UXWizHeader=Ext.extend(Ext.BoxComponent,{height:55,region:"north",title:"Wizard",steps:0,stepText:"Step {0} of {1}: {2}",autoEl:{tag:"div",cls:"ext-ux-wiz-Header",children:[{tag:"div",cls:"ext-ux-wiz-Header-title"},{tag:"div",children:[{tag:"div",cls:"ext-ux-wiz-Header-step"},{tag:"div",cls:"ext-ux-wiz-Header-stepIndicator-container"}]}]},titleEl:null,stepEl:null,imageContainer:null,indicators:null,stepTemplate:null,lastActiveStep:-1,updateStep:function(currentStep,title){ var html=this.stepTemplate.apply({0:currentStep+1,1:this.steps,2:title}); this.stepEl.update(html); if(this.lastActiveStep!=-1){ this.indicators[this.lastActiveStep].removeClass("ext-ux-wiz-Header-stepIndicator-active"); } this.indicators[currentStep].addClass("ext-ux-wiz-Header-stepIndicator-active"); this.lastActiveStep=currentStep; },onRender:function(ct,position){ Ext.UXWizHeader.superclass.onRender.call(this,ct,position); this.indicators=[]; this.stepTemplate=new Ext.Template(this.stepText),this.stepTemplate.compile(); var el=this.el.dom.firstChild; var ns=el.nextSibling; this.titleEl=new Ext.Element(el); this.stepEl=new Ext.Element(ns.firstChild); this.imageContainer=new Ext.Element(ns.lastChild); this.titleEl.update(this.title); var image=null; for(var i=0,len=this.steps;i<len;i++){ image=document.createElement("div"); image.innerHTML=" "; image.className="ext-ux-wiz-Header-stepIndicator"; this.indicators[i]=new Ext.Element(image); this.imageContainer.appendChild(image); } }}); Ext.UXWiz=Ext.extend(Ext.Window,{loadMaskConfig:{"default":"Saving..."},height:400,width:540,closable:true,resizable:false,modal:true,cards:null,previousButtonText:"< Previous",nextButtonText:"Next >",cancelButtonText:"Cancel",finishButtonText:"Finish",headerConfig:{},cardPanelConfig:{},previousButton:null,nextButton:null,cancelButton:null,cardPanel:null,currentCard:-1,headPanel:null,cardCount:0,initComponent:function(){ this.initButtons(); this.initPanels(); var title=this.title||this.headerConfig.title; title=title||""; Ext.apply(this,{title:title,layout:"border",cardCount:this.cards.length,buttons:[this.previousButton,this.nextButton,this.cancelButton],items:[this.headPanel,this.cardPanel]}); this.addEvents("cancel","finish"); Ext.UXWiz.superclass.initComponent.call(this); this.cardPanel.activeItem=0; },getWizardData:function(){ var formValues={}; var cards=this.cards; for(var i=0,len=cards.length;i<len;i++){ if(cards[i].form){ formValues[cards[i].id]=cards[i].form.getValues(false); }else { formValues[cards[i].id]={}; } } return formValues; },switchDialogState:function(enabled,type){ this.showLoadMask(!enabled,type); this.previousButton.setDisabled(!enabled); this.nextButton.setDisabled(!enabled); this.cancelButton.setDisabled(true); if(this.closable){ var ct=this.tools["close"]; switch(enabled){ case true: this.tools["close"].unmask(); break ; default: this.tools["close"].mask(); break ; } } },showLoadMask:function(show,type){ if(!type){ type="default"; } if(show){ if(this.loadMask==null){ this.loadMask=new Ext.LoadMask(this.body); } this.loadMask.msg=this.loadMaskConfig["type"]; this.loadMask.show(); }else { if(this.loadMask){ this.loadMask.hide(); } } },initPanelsEvents:function(){ var cards=this.cards; for(var i=0,len=cards.length;i<len;i++){ cards[i].on("show",this.onCardShow,this); cards[i].on("hide",this.onCardHide,this); cards[i].on("clientvalidation",this.onClientValidation,this); } },initPanels:function(){ var cards=this.cards; var cardPanelConfig=this.cardPanelConfig; Ext.apply(this.headerConfig,{steps:cards.length}); this.headPanel=new Ext.UXWizHeader(this.headerConfig); Ext.apply(cardPanelConfig,{layout:new Ext.layout.UXCardLayout(),items:cards}); this.initPanelsEvents(); Ext.applyIf(cardPanelConfig,{region:"center",border:false,activeItem:0}); this.cardPanel=new Ext.Panel(cardPanelConfig); },initButtons:function(){ this.previousButton=new Ext.Button({text:this.previousButtonText,disabled:true,minWidth:75,handler:this.onPreviousClick,scope:this}); this.nextButton=new Ext.Button({text:this.nextButtonText,minWidth:75,handler:this.onNextClick,scope:this}); this.cancelButton=new Ext.Button({text:this.cancelButtonText,handler:this.onCancelClick,scope:this,minWidth:75}); },onClientValidation:function(card,isValid){ if(!isValid){ this.nextButton.setDisabled(true); }else { this.nextButton.setDisabled(false); } },onCardHide:function(card){ if(this.cardPanel.layout.activeItem.id===card.id){ this.nextButton.setDisabled(true); } },onCardShow:function(card){ var parent=card.ownerCt; var items=parent.items; for(var i=0,len=items.length;i<len;i++){ if(items.get(i).id==card.id){ break ; } } this.currentCard=i; this.headPanel.updateStep(i,card.title); if(i==len-1){ this.nextButton.setText(this.finishButtonText); }else { this.nextButton.setText(this.nextButtonText); } if(card.isValid()){ this.nextButton.setDisabled(false); } if(i==0){ this.previousButton.setDisabled(true); }else { this.previousButton.setDisabled(false); } },onCancelClick:function(){ if(this.fireEvent("cancel",this)!==false){ this.close(); } },onFinish:function(){ if(this.fireEvent("finish",this,this.getWizardData())!==false){ this.close(); } },onPreviousClick:function(){ if(this.currentCard>0){ this.cardPanel.getLayout().setActiveItem(this.currentCard-1); } },onNextClick:function(){ if(this.currentCard==this.cardCount-1){ this.onFinish(); }else { this.cardPanel.getLayout().setActiveItem(this.currentCard+1); } }}); Ext.UXWizCard=Ext.extend(Ext.FormPanel,{header:false,hideMode:"display",initComponent:function(){ this.addEvents("beforecardhide"); Ext.UXWizCard.superclass.initComponent.call(this); },isValid:function(){ if(this.monitorValid){ return this.bindHandler(); } return true; },bindHandler:function(){ var valid=true; this.form.items.each(function(f){ if(f.isValid&&!f.isValid(true)){ valid=false; return false; } }); if(this.buttons){ for(var i=0,len=this.buttons.length;i<len;i++){ var btn=this.buttons[i]; if(btn.formBind===true&&btn.disabled===valid){ btn.setDisabled(!valid); } } } this.fireEvent("clientvalidation",this,valid); },initEvents:function(){ var old=this.monitorValid; this.monitorValid=false; Ext.UXWizCard.superclass.initEvents.call(this); this.monitorValid=old; this.on("beforehide",this.bubbleBeforeHideEvent,this); this.on("beforecardhide",this.isValid,this); this.on("show",this.onCardShow,this); this.on("hide",this.onCardHide,this); },bubbleBeforeHideEvent:function(){ var ly=this.ownerCt.layout; var activeItem=ly.activeItem; if(activeItem&&activeItem.id===this.id){ return this.fireEvent("beforecardhide",this); } return true; },onCardHide:function(){ if(this.monitorValid){ this.stopMonitoring(); } },onCardShow:function(){ if(this.monitorValid){ this.startMonitoring(); } }});
使用方法:
var wizard=new Ext.UXWiz({title:"\u5408\u5e76\u673a\u6784",headerConfig:{title:"\u673a\u6784\u5408\u5e76"},cardPanelConfig:{defaults:{baseCls:"x-small-editor",bodyStyle:"padding:40px 15px 5px 20px;background-color:#F6F6F6;",border:false}},cards:[new Ext.UXWizCard({title:"Welcome",items:[{border:false,bodyStyle:"background:none;",html:"\u673a\u6784\u5408\u5e76\uff0c\u9009\u62e9\u9700\u8981\u5408\u5e76\u7684\u673a\u6784\uff0c\u786e\u5b9a\u5408\u5e76\u540e\u7684\u76ee\u6807\u673a\u6784\uff0c\u4fdd\u5b58\u540e\u5408\u5e76\u524d\u7684\u673a\u6784\u5c06\u88ab\u5220\u9664\uff0c\u5176\u4eba\u5458\u4fe1\u606f\u5c06\u8f6c\u79fb\u5230\u65b0\u673a\u6784\u3002"}]}),new Ext.UXWizCard({title:"Your name",monitorValid:true,defaults:{labelStyle:"font-size:11px"},items:[{border:false,bodyStyle:"background:none;padding-bottom:30px;",html:"Please enter your first- and your lastname. Only letters, underscores and hyphens are allowed."},new Ext.form.TextField({name:"firstname",fieldLabel:"Firstname",allowBlank:false,validator:function(v){ var t=/^[a-zA-Z_\- ]+$/; return t.test(v); }}),new Ext.form.TextField({name:"lastname",fieldLabel:"Lastname",allowBlank:false,validator:function(v){ var t=/^[a-zA-Z_\- ]+$/; return t.test(v); }})]}),new Ext.UXWizCard({title:"Your email-address",monitorValid:true,defaults:{labelStyle:"font-size:11px"},items:[{border:false,bodyStyle:"background:none;padding-bottom:30px;",html:" Please enter your email-address."},new Ext.form.TextField({name:"email",fieldLabel:"Email-Address",allowBlank:false,vtype:"email"})]}),new Ext.UXWizCard({title:"Finished!",monitorValid:true,items:[{border:false,bodyStyle:"background:none;",html:"Thank you for testing this wizard. Your data has been collected "+"and can be accessed via a call to <pre><code>this.getWizardData</code></pre>"+"When you click on the \"finish\"-button, the \"finish\"-event will be fired.<br/>"+"If no attached listener for this event returns \"false\", this dialog will be "+"closed. <br />"}]})]}); wizard.on("finish",function(t,d){ alert(Ext.encode(d)); return false; },wizard); wizard.show();
测试效果图:
官方网站:
http://www.siteartwork.de/wizardcomponent
评论
1 楼
downing114
2011-04-17
我使用wizard.hide(); 然后再wizard.show();就不行了,js报错:
‘dom.style’为空或不是对象
ext-all-debug.js 第7000行
‘dom.style’为空或不是对象
ext-all-debug.js 第7000行
发表评论
-
extjs3.X支持树型的下拉控件
2010-09-26 08:58 2657exejs是一个非常方便我们扩展自己控件的js框架,我们能想到 ... -
Javascript: unterminated string literal解决方法
2010-07-28 14:03 1858先将\r\n替换为<br>,然后再将\r与\n替换 ... -
Extjs 简单扩展 Component 实现点击刷新的验证码
2010-07-24 12:03 1253Ext.Image=Ext.extend(Ext.Comp ... -
扩展 ExtJs的编辑器(HtmlEditor):插入图片
2010-05-07 11:18 3868Ext内置的编辑器功能相对还是很弱,例如插入 ... -
ExtJS3 下拉树TreeComboBox的修改
2009-12-23 09:48 2322拜读了[Ext 3.x + Ext 2.x] 下拉树 Ext ... -
Ext.form.ComboBox加载json时刻默认选中的解决
2009-12-23 09:47 2003重写combo的setValue Ext.override( ... -
Extjs-RowExpander 的异步调用
2009-12-23 09:26 2177RowExpander是Extjs中grid的一个插件,可以在 ... -
给TextField添加tip信息
2009-10-16 11:59 3685有些时候我们需要给文本框添加提示信息,但是默认的控件是不支持的 ... -
类似163邮件系统的附件上传控件
2009-10-16 10:23 3912为了能够在页面中做到动态的添加和删除附件信息,着实费了不少精力 ... -
支持显示树的下拉选择框
2009-10-16 10:14 1620extjs是一个非常不错的页面显示架构,在扩展页面组件方面也是 ... -
extjs 解决combox和datefield 下拉部份被其他层遮盖的问题
2009-04-21 20:17 2694在我们使用combox和datefield 的时候,常遇到弹出 ...
相关推荐
- 日期控件支持多种日期格式,如'YYYY-MM-DD'、'MM/DD/YYYY'等,可通过`format`属性设置。 - 用户可以设置日期选择范围,如最小日期和最大日期,以及是否开启日期验证。 - 示例代码:`var dateField = new Ext....
ExtJs图片按钮控件是ExtJs框架中一种增强的按钮组件,它允许开发者在按钮上显示图片,以提供更丰富的用户界面。这个控件通常用于创建具有视觉吸引力的交互式UI元素,比如导航按钮或者操作按钮。下面我们将深入探讨...
6. **国际化支持**:ExtJS支持多语言,微调控件也可以根据用户设置的语言环境显示相应的提示信息。 7. **无障碍性**:确保微调控件遵循无障碍设计原则,如提供键盘导航支持和适当的ARIA属性。 理解并掌握这些知识...
在EXTJS这个强大的JavaScript框架中,时间控件是开发者经常使用的组件之一,尤其在构建复杂的Web应用程序时。EXTJS的时间控件允许用户选择或输入时间,通常以小时、分钟和秒为单位,提供了用户友好的界面和丰富的...
3. **事件处理**:可以监听`select`事件,当用户选择日期和时间后触发,进行后续处理,如保存数据。 4. **自定义样式**:可以通过CSS对DateTimeField的外观进行调整,例如更改背景色、字体大小等。 5. **国际化...
5. **事件处理**:ExtJS控件通常支持多种事件,如`select`事件(当用户选择一个日期或时间时触发),开发者可以绑定回调函数来响应这些事件,进行进一步的数据处理或验证。 6. **本地化**:对于国际化的应用,日期...
- ExtJS 的组件可按需加载,提高页面性能。C#后端可提供分页、过滤和排序等功能,以适应动态加载的数据需求。 10. **调试和测试**: - 开发过程中,使用Visual Studio进行C#代码的调试,同时利用浏览器的开发者...
Extjs DateField控件 - 只选择年份(找了很久发现网上只有选择年月的控件,于是基于extjs年月控件设计了只选择年份的控件)
使用Extjs4.1编写了只能选择年月的日期控件
3. **事件处理**:利用ExtJS的事件系统,如change事件,来监听用户的选择并触发相应的行为。 4. **Store配置**:配置Store的proxy,连接到后台数据源,可以是JSONP、Ajax或者远程服务器。 5. **模板和渲染器**:定义...
再来看“ExtJs:收集基于ExtJs扩展的一些控件3”。这个文件可能包含了一些最新的或者实验性的控件,可能涉及到前沿的技术,如响应式设计、触摸事件支持等。对于开发者来说,了解和掌握这些控件可以帮助他们在构建...
此外,日期时间控件还支持事件监听,如`select`事件,当用户选择了一个新的日期和时间后触发,这在处理用户输入和更新关联的数据模型时非常有用。同时,控件还提供了验证功能,确保用户输入的日期和时间符合指定的...
在EXTJS 4.1框架中,日期时间选择控件是开发者经常需要用到的组件,用于在用户界面中方便地输入和选择日期与时间。本文将详细介绍EXTJS 4.1中的日期时间选择控件,并针对可能存在的不合理之处进行讨论。 首先,...
3. **JavaScript(JS)**:作为ExtJS的基础,JavaScript是实现这些控件交互的核心语言。开发者使用JavaScript编写事件处理函数,监听用户的操作,如点击按钮或输入文字,然后更新UI状态,执行相应的逻辑,如验证IP...
7. **国际化支持**:日期时间控件支持多语言,包括中文。通过调整框架的本地化文件,可以实现不同语言环境下的正确显示。 8. **自定义模板**:如果你对默认的显示样式不满意,可以自定义模板,以满足特定的设计需求...
3. **事件处理**:DateTimeField触发各种事件,如`select`事件在用户选择新的日期和时间后触发,开发者可以监听这些事件来执行相应的操作,比如更新数据模型或验证输入。 4. **样式和布局**:DateTimeField可以适应...
ExtJS 是一个强大的...综上所述,实现ExtJS多文件上传控件涉及到前端的文件选择、表单提交、进度显示,以及后端的文件接收和处理等多个环节。通过熟练掌握这些知识点,你可以创建出高效且用户友好的文件上传功能。
在本场景中,"extjs struts2 多图片批量上传控件"是一个集成解决方案,允许用户通过ExtJS前端框架批量上传多张图片,并通过Struts2后端框架进行处理。 **ExtJS** 是一个基于JavaScript的UI库,它提供了丰富的组件和...
在EXTJS中,时间控件是常见的交互元素,允许用户选择特定的时间,包括年、月、日、时、分和秒。这篇文档将深入探讨EXTJS中的时间控件及其使用方法。 首先,EXTJS时间控件的设计理念是为了提供用户友好的时间选择...
ExtJS 的时间控件也支持响应式布局,可以根据屏幕大小自动调整其显示方式,确保在各种设备上都有良好的用户体验。 9. **与服务器端的交互** 选定的时间可以通过AJAX请求发送到服务器,进行验证或存储。在提交表单...