`
zha_zi
  • 浏览: 592689 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

extjs4 各种怪异问题

阅读更多

    用extjs4 已经有一段时间了,过去开发的时候用过extjs2.2 因为放下了两年所有很多东西记得不是很清楚了,现在又直接使用4 突然发现这个世界变得太快连代码都变得这么快,大部分东西都完全不一样了,组建,数据交互.....,因为有采用了extjs4的新标准MVC 哎现在这个前段也搞什么三层,软件架构真是越来越复杂。在此主要整理记录一下在4中遇到一下比较奇怪的问题和解决方法,

    1: MVC 初始化的问题,MVC 的核心是Controller 相当于Servlet 大量逻辑性的代码都写在里边主要需要引入 stores,

views,models 只要需要显示在页面的view都要引入到views 数组中,MVC 在加载Controller 的时候会创建stores 中所有的stores ,其他的views ,models 则不会创建对象,不知道他们这样设计的目的在于什么?

    2: MVC 中 一般在View 中包含一个Store ,而在Store中会包含一个Model 的属性,view中包含store 例如store:'config.configmanage.DPCGridPanelStore', 只需要写入store的相对路径即可,但是 store 中包含model 则必须写入绝路径 model:'DELTA.model.config.configmanager.DPCModel', 不知道他们这样设计目的在于什么?

    3: 属性赋值 :创建组建时候直接给组建的属性赋值 和通过Ext.apply()给组建赋值有区别,其中有一个应用就是



 tab 中新增一个grid 第一次没有问题,但是如果把这个tab 关闭 在点击新增这个grid 这个grid的就会显示出现问题,搞了好长时间发现吧 分页bar 通过apply的方式赋给grid 就不会出现这个问题,如果是直接配置给gird 就会出问题实在是不能理解。

    4: baseParams 使用 一般在条件分页的时候使用 在使用2.2的时候 直接通过store.load({baseParams:{a:a}}); 现在通过这个方法没法执行具体使用方法

var new_params = { ndpcId:id};
			    Ext.apply(win.query("#dpcCheckBoxTree")[0].getStore().proxy.extraParams,new_params);
				win.query("#dpcCheckBoxTree")[0].getStore().load();

 

5: 在使用可编辑Grid 的时候 最后一步往往都是获得修改的数据集提交到后台

extjs3 的时候 通过调用store的getModifyRecords() 的方法 4以后改成getUpdatedRecords但是在调用后发现修改过的 model[] 的长度都是0 。解决办法

ext 的模型类:model有如下一个熟悉

idProperty  : String

The name of the field treated as this Model's unique id (defaults to 'id').(唯一识别store中记录的字段)

默认为'id',如果没有配置这个属性,就需要在自己定义的model中提供一个名叫'id'的唯一主键。或者配置成自己的主键如:

Ext.define('Tms.model.QualificationInfo', {

extend : 'Ext.data.Model',

        idProperty : 'qiId',//定义自己的主键

fields : [{

name : 'qiId',

type : 'int',

useNull : true

}, {

name : 'qtId',

type : 'int',

useNull : true

}, 'qiName', 'qiParents', 'qiNovitiate', 'qiTrainingTask']

});

 

 

6: 在使用tree的时候出现点击树节点出现等待的符号无法进入的原因是 后台返回的tree 节点的id 有重复导致。

 

 

7: grid 在tab 中显示,如果同一个grid 在tab 上出现了两次就会出现 第二个grid 的数据把前一个覆盖,这个是因为grid中使用的store是单例 的你创建的多个grid 但是却创建了一个store 所以就会导致第二个在tab上新增的grid 的数据会覆盖原先打开的grid的数据 var store=Ext.widget('deviceliststore'); 然后store:store

传统的store:'Ext.data.Store' 这样的写法在创建多个grid 的时候只会穿件一个store

 

8:打开多个tab标签页 图标显示问题除了第一个的图标其他的无法正常显示, tbar 中如果是button 请不要指定xtype属性就可以解决

 

9: 在使用grid 固定列的时候 不但要设定 {xtype:'rownumberer',header:'编号',width:40,locked:true },还要设定height 的属性,不然是不能正常使用的。

 

10: Extjs 中的组件最好不要设置ID 而设置Name 属性, 在 例如panel 的id:p1 , 在tabpanel 中应用的时候弹出多个tab 的时候就会出现id 冲突的问题,错误现象是显示会出现异常,在tabpanel 使用的时候会经常的出现id冲突的问题

例如 按钮的id 冲突会导致图片无法显示的问题,这里说的id 冲突并不是你定义了两个id 一样的组件,而是你定义一个id但是这个组件生成了多次。

 

11:关于 Tree 删除的问题,如何删除除了根节点以外所有的子节点??

     Ext Tree 的root 也就是根节点非常重要,TreeStore 中有一个removeAll 方法是删除树的所有节点,但是一旦删除树的所有节点就无法对树进行操作了,所以在删除的时候经常都是保留根节点进行删除

tree.getStore().getRootNode( ).removeAll();

 

待续。。。。。。。。

 

 

12:在可编辑的grid 中使用combobox 控件的时候选择的dispalyValue renderer以后就成了 value ,处理方法

 

var alarmStore=Ext.create("Ext.data.Store", {
						                fields: ["alarmStandardId", "standardName"],
					                 	proxy:{
									    	type : 'ajax',
											url : 'findAlarmStandardNameList.action',  
											pageParam:'pageNo',
											//model:'Delta.model.config.devicemanage.DeviceModel', 
											reader : {
												type:'json' , 
												root:'alarmStandardNameList'
												
											}
									    } 
						            });


						field: { 
			        	  
							        allowBlank: true,
							        xtype: 'combo',
							        name:'', 
							        queryMode: 'remote',  
							        store:alarmStore,
							        displayField:'standardName',
							        valueField:'alarmStandardId',
							        editable:false 
						         
						    } ,
						   renderer: function(value, metadata, record, rowIndex, columnIndex, store){
						   		    index = alarmStore.findExact('alarmStandardId',value); 
					                if (index != -1){
					                    rs = alarmStore.getAt(index).data;
					                    
					                    return rs.standardName; 
					                }
					           	 /*var index = store.find(buildingCombobox.valueField,value);
					      		 var r = store.getAt(index);	
					           	 alert(r.data.buildingName);*/
					           	 //console.log(record);
					           	 return value;
				                }

 

 

13:grid 中使用lock (固定表头) 下动态设置column 的show 和hide 方法, 在普通grid 下动态设定表头比较容易

只需要获取grid 的columns 然后设置 需要隐藏的列.columns[x].setVisible(false); 但是在使用固定表头的情况下这个方法就没法执行老是提示 no method 的就是错误,确实百撕不得骑姐,非常不正常,就在生成的js 的代码中看看什么状况吧,发现在属性plugins 中多了一些东西 其中有一个view 属性,在view属性中有找到了lockedGrid ,和normalGrid两个不同grid 呵呵知道是什么

 

原因了 原来固定表头其实是通过插件吧grid 分成了两个grid 真正的column 就隐藏在这两个grid中 grid.plugins[0].view.normalGrid.columns[6].setVisible(false); 呵呵搞定

 

 

 

14: 如何彻底隐藏列,一般开发者在使用隐藏列的时候都是hidde:true 用来隐藏列,但是这种隐藏列是不干净的,可以通过列下来在显示上,所以要想彻底隐藏列不但要设置 hidden 属性还要设置 hideable: false , 属性

 

 

15:ajax 提交返回结果中带有<per></per> ,解决方法 response.setContentType("text/html");  

 

待续。。。。。。。。。。。。。。。

 

  • 大小: 22.5 KB
1
0
分享到:
评论

相关推荐

    extJS4升级至extJS6.6所遇问题及解决方案

    项目进行前端框架升级——extJS 4升级至extJS6.6所遇的一些问题及相对应的解决方案建议

    extJs3升级extjs4方案

    ExtJS3 升级到 ExtJS4 方案 ExtJS3 升级到 ExtJS4 需要修改大量代码,主要是因为 ExtJS4 配备了一类新的系统,不向后兼容。在 ExtJS 3 里生成表的几个框架组件,ExtJS4 大多生成 div,这使得 CSS classes 将会失败...

    包含各种类型的extjs小图标,Extjs4小图标

    在标题和描述中提到的“Extjs4小图标”指的是ExtJS 4版本中使用的一系列图形图标,这些图标用于增强应用程序的视觉效果,提供用户友好的操作指示。 1. **图标分类**: - 图标通常分为不同的类别,如操作图标(比如...

    extjs4中文文档

    EXTJS4是一个强大的JavaScript框架,主要用于构建富客户端Web应用程序。这个中文文档是EXTJS4的官方文档...同时,文档还可能涵盖了EXTJS4的升级、调试、性能优化等相关内容,帮助开发者解决实际开发过程中遇到的问题。

    extjs4学习文档

    EXTJS4 是一款强大的JavaScript框架,用于构建富客户端Web应用程序。EXTJS4的学习文档旨在帮助开发者掌握这一框架,尤其对于初学者来说,提供了宝贵的资源。文档中包含了从环境配置到实际应用开发的基础步骤。 首先...

    Extjs4的demo

    在本例中,我们假设你已经在MyEclipse中创建了一个新的Web项目,并命名为"Extjs4"。将ExtJS 4.0.7的文件放入Webroot目录,以便于访问。 接下来,你需要设置一个学习环境。确保你的机器上已经安装了MyEclipse和...

    extjs4完整下载

    ExtJS4正式版(官方完整下载包):含所有的源代码,html,api文档,示例。官方网站下载现在需要注册,这个仅供爱好者个人学习使用,如果项目中使用请至官方网站购买。

    extjs4 ComboBox 点击下拉框 出现grid效果

    在EXTJS4中,ComboBox是一个常用的组件,它用于创建下拉选择框,通常用于输入框的辅助选择。这个组件提供了一种用户友好的方式来从一组预定义的选项中进行选择。然而,根据你的标题和描述,你似乎遇到了一个特别的...

    extjs4-教程

    ### ExtJS4基础教程知识点 #### 1. ExtJS4开发环境搭建 ExtJS4是使用JavaScript进行开发的框架,专门用于构建富互联网应用(RIA)。搭建ExtJS开发环境需要预先安装一些软件和配置开发环境。以下步骤详细介绍了如何...

    EXTJS4自学手册

    EXTJS4自学手册——EXT文件目录,本地加载文档,命名规范 EXTJS4自学手册——EXT基本方法、属性(onReady、define、create) EXTJS4自学手册——EXT基本方法、属性(apply、applyIf、constructor) EXTJS4自学手册...

    ExtJs 4 API中文

    ExtJs 4 API 中文

    ExtJs4.rar

    在本文中,我们将深入探讨ExtJS4这一版本的重要特性、改进以及它如何扩展了先前版本的功能。 首先,ExtJS4在组件化方面有了显著提升。在之前的版本中,组件系统就已经是其核心优势,而ExtJS4进一步优化了这一系统,...

    ExtJS4多文件上传,带进度条及管理

    本文将详细解析"ExtJS4多文件上传,带进度条及管理"这一主题,涵盖其核心概念、实现方式以及相关技术。 **一、ExtJS4概述** ExtJS4是Sencha公司推出的一个前端框架,它提供了丰富的组件库和强大的数据绑定机制,...

    Extjs4 grid使用例子

    ExtJS4是一个强大的JavaScript框架,主要用于构建富客户端的Web应用程序。在给定的"Extjs4 grid使用例子"中,我们可以深入理解如何在MVC架构下有效地利用ExtJS4的Grid组件。Grid组件是ExtJS中的核心部分,它提供了一...

    extjs4学习资源大全

    在实际项目中,你可能还会遇到数据加载、异步通信(使用Ajax)和状态管理等问题,ExtJS4提供了解决这些问题的强大工具,如Store和Proxy。同时,不要忽视性能优化,合理使用组件配置和内存管理技巧,可以使你的应用...

    ExtJS4之初体验

    ### ExtJS4之初体验 #### 一、准备工作 在开始使用ExtJS4进行开发之前,我们需要做一些基础的准备工作,确保开发环境已经搭建好,并且能够顺利地运行第一个ExtJS4程序。 ##### 1. 浏览器兼容性 ExtJS4支持大部分...

    EXT JS ExtJS 4

    我很自豪能代表Sencha和ExtJS团队和大家成功的分享了ExtJS 4的预览版、3个beta版和今天发布的正式版等5个版本。 ExtJS 4从创建之初,就以最全面现代化为目标,它采用了改进的架构和加入了许多新的特性,从而使你可以...

    Extjs4添加tooltip

    Extjs4的textfield控件竟然没有tooltip悬浮提示,这应该算是个bug吧。网上查了很多,也没有方案。后来自己通过查询并整理出这个方案,终于实现了。 思想如下: 在textfield渲染时注册mouseover事件,然后在其中调用...

    Extjs4 图片浏览器

    ExtJS4图片浏览器是一款基于ExtJS4框架开发的用于展示和浏览图片的应用程序。ExtJS是一个强大的JavaScript库,专门用于构建富客户端Web应用程序。这款图片浏览器利用了ExtJS4的组件化、数据绑定和事件处理等特性,为...

    extjs4官方示例以及api文档html版

    这些示例涵盖了EXTJS4的各种组件和功能,包括表格(Grid)、面板(Panel)、表单(Form)、菜单(Menu)、工具栏(Toolbar)、树形视图(Tree)、图表(Charts)等。通过运行示例,你可以直观地看到组件的外观和交互...

Global site tag (gtag.js) - Google Analytics