昨天晚上在家里写代码时遇到一个奇怪的问题。事先写好了一个FormPanle,将其添加到Window中,并在Window中添加按钮,调试,一切正常,按钮点击可以工作。随,又写了一个Panel,继承于这个FormPanel,并将其加入到TabPanel中,同样的为其添加按钮,调试,显示一切正常,可是按钮却不能工作了!点击事件失效了!!代码如下:
- POWindow=Ext.extend(Ext.Window,{
- form:null,
- constructor:function(){
- this.form=newPOFormPanel();
- POWindow.superclass.constructor.call(this,{
- width:600,
- autoHeight:true,
- modal:true,//模式窗体
- onEsc:Ext.emptyFn,
- plain:true,
- resizable:false,
- //minimizable:true,
- //closable:false,
- closeAction:"hide",
- constrain:false,
- layout:"form",
- items:[this.form],
- buttonAlign:"center",
- buttons:[{
- text:"SaveAsDraft",
- handler:this.SaveButtonClick,
- scope:this
- },{
- text:"Submit",
- handler:this.SubmitButtonClick,
- scope:this
- },{
- text:"Cancel",
- handler:this.CancelButtonClick,
- scope:this
- }]
- });
- },
- SaveButtonClick:function(btn,e){
- alert(Ext.encode(this.form.getValues().data));
- },
- SubmitButtonClick:function(btn,e){
- alert(Ext.encode(this.form.getValues().data));
- },
- CancelButtonClick:function(btn,e){
- this.hide();
- this.form.reset();
- }
- });
- //==============================================================================
- /**/
- POTabFormPanel=Ext.extend(POFormPanel,{
- //frame:true,
- title:"PurchaseOrder",
- closable:true,
- autoScroll:true,
- buttonAlign:"center",
- buttons:[{
- text:"SaveAsDraft",
- handler:this.SaveButtonClick,
- scope:this
- },{
- text:"Submit",
- handler:this.SubmitButtonClick,
- scope:this
- },{
- text:"Cancel",
- handler:this.CancelButtonClick,
- scope:this
- }],
- constructor:function(_cfg){
- if(_cfg)
- Ext.apply(_cfg);
- POTabFormPanel.superclass.constructor.call(this);
- },
- SaveButtonClick:function(){
- alert("SaveButtonClick");
- //alert(Ext.encode(this.getValues().data));
- },
- SubmitButtonClick:function(btn,e){
- alert(Ext.encode(this.getValues().data));
- },
- CancelButtonClick:function(btn,e){
- this.reset();
- }
- });
一直不知道是哪里出了问题,上网Google了一下也没有找到答案,只有自己摸索解决了。
凝视了代码好久,脑子里突然想到之前听陈治文老师视频中讲到的“设计时代码”和“运行时代码”,那问题会不会是出现在这里呢?我试着将Buttons的代码移到其构造函数里,再次调试,按钮单击正常工作了!!!
- POTabFormPanel=Ext.extend(POFormPanel,{
- frame:true,
- //title:"PurchaseOrder",
- closable:true,
- autoScroll:true,
- constructor:function(_cfg){
- if(_cfg)
- Ext.apply(this,_cfg);
- POTabFormPanel.superclass.constructor.call(this,{
- buttonAlign:"center",
- buttons:[{
- text:"SaveAsDraft",
- handler:this.SaveButtonClick,
- scope:this
- },{
- text:"Submit",
- handler:this.SubmitButtonClick,
- scope:this
- },{
- text:"Cancel",
- handler:this.CancelButtonClick,
- scope:this
- }]
- });
- },
- SaveButtonClick:function(){
- alert("SaveButtonClick");
- //Ext.log("SaveButtonClick");
- alert(Ext.encode(this.getValues().data));
- },
- SubmitButtonClick:function(btn,e){
- alert(Ext.encode(this.getValues().data));
- Ext.log(Ext.encode(this.getValues().data))
- },
- CancelButtonClick:function(btn,e){
- this.reset();
- }
- });
问题得到了解决,记录在我的Blog中,方便其他遇到类似问题的朋友参阅!!
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关推荐
在ExtJS中,TabPanel是一个容器,可以包含多个Panel(或称之为卡片),每个Panel对应一个标签页。创建一个基本的TabPanel需要指定` xtype: 'tabpanel' `,并可以通过`items`属性来添加初始的面板。例如: ```...
4. **动态添加标签页**:在`itemclick`事件处理函数中,利用`TabPanel`的`add`方法添加新标签页,或者通过`setActiveTab`方法切换到已有标签页。 5. **更新标签页内容**:如果需要动态加载内容,可以在此时创建或...
关于标签页的制作给出了三种方法,第一种就不介绍给大家了,因为时间久远到现在改方法已经失效,但是也放在附件中供大家参考就是那个tab。第二种是让我眼前一亮的。使用方法是这样:首先建立一个figure,并在其中...
通过以上两种方法——调整`autoDestroy`和`closeAction`属性——我们可以有效地解决Ext中`TabPanel`关闭后再打开不显示的问题。这些技巧不仅能够提升用户体验,还能够在复杂的业务场景下提供更加灵活的界面管理方案...
在IT行业中,用户界面设计是至关重要的一环,它直接影响到用户体验和软件的易用性。本实例探讨的是如何使用jQuery来实现一个功能丰富的TabPanel选卡结合右键菜单的交互功能,这对于创建高效的多页面视图应用是非常...
其中, `.x-tab-active` 是Extjs中当前活动页签的CSS类名, `.x-tab-wrap` 是标签页签的容器, `.x-tab-button` 是标签页签的按钮, `.x-tab-inner` 是标签页签的内部容器。 在上面的代码中,我们使用了CSS选择器来...
在前端开发中,`tabpanel` 和 `portal` 是两种重要的技术概念,它们分别涉及到用户界面的组织和组件渲染。本文将深入探讨`tabpanel`和`portal`,并结合提供的资源来解析它们的工作原理和实际应用。 `tabpanel`通常...
在ExtJS中,`tabPanel` 是一个非常重要的组件,它允许你在一个容器内创建多个标签页,每个标签页可以承载不同的内容,提供了类似桌面应用的用户体验。在实际开发中,`tabPanel` 经常被用来组织和展示复杂的信息。 `...
这里首先获取到当前激活的标签页,然后调用`remove`方法将其从`TabPanel`中移除。需要注意的是,这种方法会直接销毁该标签页及其关联的数据模型,因此在使用前应确保没有其他引用指向该对象。 #### 关闭其他标签页 ...
在IT行业中,`TabPanel`通常是指一种用户界面(UI)组件,常见于Web应用程序或桌面应用程序中。它允许在一个容器内展示多个面板,每个面板代表一个独立的页面或者视图,用户可以通过点击不同的标签在这些页面之间...
在网页设计中,TabPanel 提供了一种整洁、高效的方式,让用户通过点击不同的标签来切换显示不同的信息板块,提高用户体验。这种布局模式在数据展示、设置页面和多模块内容呈现中尤其常见。 【描述】提到的是使用 ...
1. **扩展TabPanel类**:创建一个新的类,继承自Ext.TabPanel,并在扩展类中添加或覆盖必要的方法和配置,如`layout`配置项可能需要设置为自定义的垂直布局。 2. **自定义布局**:创建一个新的布局管理器,可能命名...
调用这个方法后,tabpanel会切换到指定的选项卡,并将其设为活动状态。 然而,在实际开发中,我们需要注意以下几点: 1. **生命周期管理**:确保在尝试激活选项卡之前,tabpanel及其所有子选项卡都已经创建并加载...
在EXT JS这个强大的JavaScript库中,`TabPanel`是一个核心组件,用于实现多标签页界面。本篇文章将深入探讨如何在EXT JS的`TabPanel`中实现动态页面加载,这在构建可扩展且高效的Web应用时非常关键。通过动态加载,...
基于jquery的tabpanel,支持动态添加,支持滚动条,可内嵌iframe,支持关闭按钮,支持tab的背景图片配置, 这个是我在网上找到一个原始的版本,然后修改的,有详细注释,写了11个使用例子,基本涵盖了该组件的功能。...
最后一步是将GridPanel集成到TabPanel中,使其成为TabPanel的一个选项卡。例如: ```javascript // main.js 续 Ext.onReady(function() { // 创建TabPanel var tabPanel = Ext.create('Ext.tab.Panel', { width:...
必须唯一,或者不设置该参数,否则将无法添加到选项卡组件中,默认自动生成。 title<string> 元素标题 可以动态设置。 closeable<boolean> 是否可关闭 true可关闭,false不可关闭,默认为true。
在IT行业中,TabPanel是一种常见的用户界面元素,广泛应用于各种应用程序和网页设计中。它用于组织和展示多个视图或面板,每个面板通常包含不同的内容,用户可以通过点击不同的标签在这些面板之间切换。这个...
在Web UI设计中,TabPanel 是一种常见的布局元素,它将不同的内容区域分割成不同的标签页,用户可以通过点击不同的标签来切换显示的内容。Ext 的 TabPanel 提供了美观的样式和易于操作的API,使得在Web应用中实现...
在网页设计中,Tab Panel是一种常见的用户界面元素,它允许用户通过点击不同的标签来切换显示不同的内容区域。在这个“javascript+css+tabpanel的实现”中,我们将深入探讨如何使用HTML、JavaScript和CSS来创建一个...