`
babydeed
  • 浏览: 239115 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

extjs 自己的小小总结

    博客分类:
  • Ext
阅读更多

总结自己的代码 可能以后会用到 记录一下 方便以后查阅

 1:所以显示window 的所需的代码

 

MyExt.Utils.myWindow = Ext.extend(Ext.Window, {  
     shadow:false,
      closeAction:'hide',
     layout:'fit',
     closable:true,
     resizable:false, 
     modal:true,
     constrain:true,
      listeners:{
     	hide:function(w){
      	      if(w.items){
        		w.items.each(function(f){
        		 	if(f.getXType()=="form"){
          				 f.form.reset();
        		 	}
           		});
      	    }
     	}
     }, 
      initComponent: function(config){ 
      Ext.apply(this,config);
    MyExt.Utils.myWindow.superclass.initComponent.call(this);   
    }   
   });

   使用例子:

 

   		var win = new MyExt.Utils.myWindow({
   			height:600
   			,width:650
   			,items:[form]
   		})

 

2:jsonStore

 

MyExt.Utils.myJsonStore = Ext.extend(Ext.data.JsonStore, {
    constructor: function(config){
    	var cfg = {
    		  totalProperty: "totalCount",//总数 
			  root: "items",//grid的数据
			  autoLoad:false, //是否自动加载
			  autoDestroy:true, //自动销毁
			  idProperty: 'id' //一个数据对象的参数名,它包含了一条记录的标识符。 默认为 id 
			  	
    	};
    	//把cfg对象的所有属性覆盖到congfig对象里面
    	//如果congfig对象已经存在cfg的属性 则不覆盖
        Ext.applyIf(config,cfg);
        MyExt.Utils.myJsonStore.superclass.constructor.call(this,config);
    }
});

 

  使用例子:

 

store = new MyExt.Utils.myJsonStore({
				        url:"....action",
				        fields:[
					        		{"name":"yyshd","type":"string","mapping":"yyshd"},
					        		{"name":"hm","type":"string","mapping":"hm"},
					        		{"name":"sf","type":"string","mapping":"sf"},
					        		{"name":"ds","type":"string","mapping":"ds"},
					        		{"name":"yysid","type":"int","mapping":"yysid"},
					        		{"name":"qy","type":"int","mapping":"qy"}
				        	    ]
				    }); 

 

3:行提示

 

function showGjToolTip(_grid){
	 			var _store = _grid.getStore();
 				var view = _grid.getView();
 		 		_grid.tip = new Ext.ToolTip ({
					target:view.mainBody,
					delegate:'.x-grid3-row',
					trackMouse :true,
					width:230,
					autoHide:true, 
					title:"告警信息",
					dismissDelay:5000,  //默认5秒后提示框消失
					frame:true,
					renderTo:document.body,
					bodyStyle:"color:red",//字体颜色
					//floating:{shadow:false,shim:true,useDisplay:true,constrain:false},
					listeners:{
						beforeshow:function updateTipBody(tip){
							var rowIndex = view.findRowIndex(tip.triggerElement);
							if(_store.getAt(rowIndex).get("sfgj")==0){
								return false;
								tip.destroy(); 
							}else{
								tip.body.dom.innerHTML=_store.getAt(rowIndex).get("gjxx");
							}
						}
					}
	})
}

 

4:获得一个不带复选框的树的所有子节点的id

 

            function getTreeChildIds(node){
			        var r = [];
			        var f = function(){
			                r.push(this.id);
			        };
			        node.cascade(f);
              	    return r;
            }

 

  调用例子

 

      var rootNode = tree.getRootNode();   //获取主节点
                   var result = getTreeChildIds(rootNode );
                  alert(result ); 

 

 

5:对Ext中DateField字段的扩展 (转自: http://gaoliujie.iteye.com/blog/703839 )

  Ext中的DateField字段默认显示格式为'm/d/Y',不太符合中国的使用习惯,以'-'号隔开,或直接显示'xxxxxx'的格    式,并且在同一个软件系统中,通常情况会希望日期的显示格式都相同,不要在每个页面中单独设置显示样式。

另外,由于后台传输到前台的格式一般都是java中的Date类型,直接传输到前台会因为Ext中的时区设置问题造成转换错。

基于以上原因,扩展Ext中的DateField字段类型,代码如下所示: 

 

 

justgin.bap.DateFieldEx = Ext.extend(Ext.form.DateField,{
	format:"Y-m-d",
	
	initComponent: function() {
		this.hideTrigger = this.readOnly;
		justgin.bap.DateFieldEx.superclass.initComponent.call(this);
	},
	
	setValue:function(value){
		var date = this.formatDate2(value);
		justgin.bap.DateFieldEx.superclass.setValue.call(this, date);
	},
	
	// private ,ext自己有个formatDate方法,因此这里用formatDate2
    formatDate2 : function(date){
        //CST时间和UTC时差转换
        var dateStr=date.toString();
        var position=dateStr.indexOf("UTC");
        if(position!=-1){
        	return Ext.util.Format.date(date, this.format);
        }else{
        	var vdate=new Date(date); //后台默认为格林尼治时间,该方法会默认把后台时间认为是北京时间,北京时间比格林尼治时间多14小时。
	        //找出当地时间偏移值的毫秒数
	        var localOffset=vdate.getTimezoneOffset()*60000; 
	        var utcOffset= vdate.getTime() + localOffset;
	        timezone=utcOffset-6*3600000;//
	        var lastDate=new Date(timezone);     
	    	return Ext.util.Format.date(lastDate, this.format); 
        }
    }
});

 

6:对Ext中CheckBox的扩展 (转自:http://gaoliujie.iteye.com/blog/703833 )

 使用Ext中的Checkbox时,经常需要随form一起提交,但Checkbox设置的默认的提交值为"on""",后台代码中需要对字段的提交进行判断后取值,不符合我们通常的使用习惯,即直接将提交的值转换为对应的boolean类型,为此,特进行扩展和封装,以满足通过的使用方式,代码如下:

	justgin.bap.CheckboxEx = Ext.extend(Ext.form.Checkbox, {
		trueValue: true,
		falseValue: false,
		hiddenField: {value:''},
		
		onRender : function(ct, position){
	    	justgin.bap.CheckboxEx.superclass.onRender.call(this, ct, position);
	    	var hidden = this.el.insertSibling({tag:'input', type:'hidden', name: this.name}, 'before', true);
	    	hidden.value = this.hiddenField.value;
	    	this.hiddenField = hidden;
	    	this.el.dom.removeAttribute('name');
	    	this.on('check', this.onCheck);
	    },
	    
	    setValue : function(v){
	    	var me = this;    	
	    	justgin.bap.CheckboxEx.superclass.setValue.call(this, v);
	    	this.hiddenField.value = this.checked?me.trueValue:me.falseValue;
	    },
	   
	    getValue : function(v){
	    	return this.hiddenField.value;
	    },
	   
	    onDestroy : function(){
	        Ext.destroy(this.wrap);
	        justgin.bap.CheckboxEx.superclass.onDestroy.call(this);
	    },
	
		onCheck : function(me, checked){
	        this.hiddenField.value = checked?me.trueValue:me.falseValue;
	    }

});

 

  • 扩展两个属性trueValuefalseValue,可提供使用者指定选中或取消时提交的值,默认为truefalse
  • 重写字段的onRender方法,在render时,移除用来展示的htmlinput元素的名称,插入一个的同名hidden元素,保存要提交的值,不改变使用方式的前提下,能保证from在提交时,将插入的新元素提交,确保了设置的值会提交到后台。
  • 重写setValuegetValue方法,保证了存取值时数据的同步。
  • 常用的Ext创建对象的方式有两种:new justgin.bap.CheckboxEx()Ext.create({xtype: 'checkbox'}),要想使用户在使用第二种方式时创建一个自己扩展的对象,可以在类的声明后加入一句对象类型的注册语句即可  
  • Ext.reg('checkbox', justgin.bap.CheckboxEx);
  •  

     

     7:grid 上移 下移

     

        		Ext.apply(Ext.grid.GridPanel.prototype, {
        			moveUp : function() {
    					var d = this.getStore();
    					var c = this.getColumnModel();
    					var r = this.getSelectionModel().getSelections();
    					var idx;
    					if (r.length == 0) {
    						Ext.Msg.alert('提示', '请选择记录进行操作!');
    						return;
    					}
    					if (r.length == d.getCount())
    						return;
    					if (d.indexOf(r[0]) == 0)
    						return;
    					for (var i = 0; i < r.length; i++) {
    						idx = d.indexOf(r[i]) - 1;
    						d.remove(r[i]);
    						d.insert(idx, r[i]);
    					}
    					this.getSelectionModel().selectRow(idx);
    					this.reconfigure(d, c);
    				},
    				moveDown : function() {
    					var d = this.getStore();
    					var c = this.getColumnModel();
    					var r = this.getSelectionModel().getSelections();
    					var idx;
    					var idx;
    					var len = r.length;
    					if (len == 0) {
    						Ext.Msg.alert('提示', '请选择记录进行操作!');
    						return;
    					}
    					if (len == d.getCount())
    						return;
    					if (d.indexOf(r[len - 1]) == d.getCount() - 1)
    						return;
    					for (var i = 0; i < len; i++) {
    						idx = d.indexOf(r[len - i - 1]) + 1;
    						d.remove(r[len - i - 1]);
    						d.insert(idx, r[len - i - 1]);
    					}
    					this.getSelectionModel().selectRow(idx);
    					this.reconfigure(d, c);
    				}
    			});

     

        8:自定义事件  来自我的ext群:23334375中的中国加油所写

     

    <script type="text/javascript">
    Ext.onReady(function(){
    
      Ext.ExtendPanel= Ext.extend(Ext.Panel,{
    	initComponent:function(){
    		Ext.ExtendPanel.superclass.initComponent.call(this);
    		 this.addEvents("click");
    	},
    	onRender: function(ct, position){
    		  Ext.ExtendPanel.superclass.onRender.apply(this, arguments);
    		   var c = this.body;
    		  c.on("click", this.onClick, this);
    	},
    	onClick:function(e){
    		 this.fireEvent("click", e);
    	}
       });
    
    	var ep=new Ext.ExtendPanel({
    			renderTo:'panel',
    			width:500,
    			height:500,
    			html:'点击试试',
    			listeners:{
    				click:function(e){
    					alert("被点击了!"+e.getTarget());
    				}
    			}
    	});
    });
            </script>
        </head>
        <body>
            <div id="panel"></div>
        </body>
    </html>

     

       9:五步掌握Ext的拖放好文章地址:

          http://blog.csdn.net/zhangxin09/archive/2010/05/03/5551665.aspx

      

      10:Ext extend解释好文章 

         http://kaizhongfan.blog.163.com/blog/static/108708240201012411257716/     

         http://damoqiongqiu.iteye.com/blog/370591

     

      11:用户界面与业务逻辑的解耦(来自:http://nickevin.iteye.com/blog/691340)

        UI定义

     

    // Account.ui.js 定义UI
    
    &nbsp;AccountUi = Ext.extend(Ext.form.FormPanel, {
        title: 'Account',
        labelWidth: 100,
        labelAlign: 'left',
        layout: 'form',
        width: 600,
        frame: true,
        initComponent: function() {
            this.items = [
                {
                    xtype: 'container',
                    autoEl: 'div',
                    layout: 'column',
                    items: [
                        {
                            xtype: 'container',
                            autoEl: 'div',
                            layout: 'form',
                            columnWidth: 0.5,
                            items: [
                                {
                                    xtype: 'textfield',
                                    fieldLabel: 'First Name',
                                    anchor: '95%',
                                    name: 'fname',
                                    ref: '../../fname'
                                },
                                {
                                    xtype: 'datefield',
                                    fieldLabel: 'Birth of day',
                                    anchor: '95%',
                                    name: 'birthday',
                                    ref: '../../birthday'
                                }
                            ]
                        },
                        {
                            xtype: 'container',
                            autoEl: 'div',
                            layout: 'form',
                            columnWidth: 0.5,
                            items: [
                                {
                                    xtype: 'textfield',
                                    fieldLabel: 'Last Name',
                                    anchor: '95%',
                                    name: 'lname',
                                    ref: '../../lname'
                                },
                                {
                                    xtype: 'combo',
                                    fieldLabel: 'Sex',
                                    anchor: '95%',
                                    name: 'sex',
                                    ref: '../../sex'
                                }
                            ]
                        }
                    ]
                },
                {
                    xtype: 'htmleditor',
                    anchor: '98%',
                    fieldLabel: 'Memo',
                    height: 150,
                    width: 300,
                    name: 'memo',
                    ref: 'memo'
                }
            ];
            this.fbar = {
                xtype: 'toolbar',
                items: [
                    {
                        xtype: 'button',
                        text: 'Save',
                        ref: '../saveBtn'
                    },
                    {
                        xtype: 'button',
                        text: 'Reset',
                        ref: '../resetBtn'
                    }
                ]
            };
            AccountUi.superclass.initComponent.call(this);
        }
    });

       BL和事件处理

     

    // Account.js  处理业务逻辑和事件 关于如何引用到Form中的变量, 请参考 组件的 ref 的定义与配置
    
    Account = Ext.extend(AccountUi, {
        initComponent: function() {
            Account.superclass.initComponent.call(this);
            
            this.saveBtn.on('click', this.doSaveAction, this);
        },
        doSaveAction:  function() {
            alert('do business A....');
            alert('do business B....');
        }
    });

       组织

    // index.js
    
    Ext.onReady(function() {
    
        var account = new Account({
            renderTo: Ext.getBody()
        });
    
        account.show();
    
    });

       上面的显示效果:

     

     

      未完 总结中... 

     

    分享到:
    评论

    相关推荐

      extjs4 项目例子

      里面的一些难点、要点都加了注释,还有一个file.txt文件是本人的小小总结,还没完整。我也是一个第一次接触EXT的初学者,只希望能与大家共享、学习,许多不到的地方希望大家能体谅,用myeclipse8.6运行项目,数据库...

      ExtJS2.2网络硬盘系统.zip

      总结来说,“ExtJS2.2网络硬盘系统”是前端与后端技术结合的典范,展示了如何利用ExtJS的富客户端能力与SSH的后端框架构建高效的数据存储和共享平台。这个项目对于学习Web开发,特别是想深入了解ExtJS和SSH技术的...

      ExtJS模板使用说明(含代码示例).zip

      ExtJS是一款强大的JavaScript框架,专用于构建富...总结,ExtJS模板提供了强大的HTML生成能力,结合数据对象,可以灵活地构建动态Web界面。通过学习和熟练掌握模板的使用,能够使你在构建富客户端应用时更加得心应手。

      desktop基础搭建

      #### 六、其他小小修改 除了上述核心功能之外,还可以根据实际需求进行一些额外的小修改,比如调整壁纸的展示方式、增加新的模块等。这些修改可以帮助进一步完善和个性化Desktop环境。 ### 总结 通过本文介绍的方法...

      【大数据课设】p105出租车数据可视化分析-大数据-实训大作业.zip

      项目资源包含:可运行源码+数据集+文档 python + numpy, pandas, matplotlib, pyecharts, wordcloud 适用人群:学习不同技术领域的小白或进阶学习者;可作为课程设计、大作业、工程实训或初期项目立项。 数据来源:数据集taxis.csv从网络下载 数据清洗:异常值与缺失值的处理:有一些数据distance(乘车距离)为零而且上下车地点为空,还有些一些数据的payment(支付方式)为空。 数据预处理:将列名更改成中文 标准化与归一化: 数据分析: 数据可视化:

      TypeScript 入门教程

      TypeScript 入门教程

      人脸识别_课堂考勤_OpenCV_服务端系统_1741777828.zip

      人脸识别项目实战

      历届电赛试题及综合测评(真题+模拟题)

      本资源汇总了 历届全国电子设计竞赛(电赛)真题+模拟题,涵盖 电路设计、嵌入式系统、信号处理、自动控制等核心考点,并提供详细解析及综合测评,帮助参赛者高效备赛、查漏补缺、提升实战能力。 适用人群: 适合 准备参加电子设计竞赛的大学生、电赛爱好者、电子信息类相关专业的学生,以及希望提高电子设计和电路分析能力的工程师。 能学到什么: 电赛考察重点:熟悉往届竞赛的命题方向及考核重点。 电路设计与仿真:提升模拟电路、数字电路、单片机等核心技能。 问题分析与解决能力:通过综合测评找到薄弱点并针对性提升。 实战经验:掌握竞赛策略,提高应试效率和设计能力。 阅读建议: 建议先 通读真题,了解题型与解题思路,然后 结合模拟题实战演练,查找不足并通过测评强化练习,逐步提升竞赛能力。

      2024人工智能如何塑造未来产业:AI对各行业组织带来的的变革研究研究报告.pdf

      2024人工智能如何塑造未来产业:AI对各行业组织带来的的变革研究研究报告.pdf

      人脸识别_Golang_SDK_命令行登录_微信小程序应用_1741772240.zip

      人脸识别项目源码实战

      Vulkan原理与实战课程

      给大家分享一套课程——Vulkan原理与实战课程

      SiriYXR_Sokoban11_1741860914.zip

      c语言学习

      海豚鲸鱼数据集 5435张图 正确识别率可达92.6% 可识别:海豚 虎鲸 蜥蜴 海豹 鲨鱼 龟 支持yolov8格式标注

      海豚鲸鱼数据集 5435张图 正确识别率可达92.6% 可识别:海豚 虎鲸 蜥蜴 海豹 鲨鱼 龟 支持yolov8格式标注

      答谢中书书教学设计.docx

      答谢中书书教学设计.docx

      人脸识别_环境搭建_dlib_face_recognitio_1741771308.zip

      人脸识别项目源码实战

      网络技术_Web服务器_C语言_学习交流版_1741863251.zip

      c语言学习

      安卓开发_Gradle配置_React_Native_Meg_1741777287.zip

      人脸识别项目源码实战

      人工智能_深度学习_图像识别_UI界面_项目展示.zip

      人脸识别项目实战

      基于Springboot框架的美发门店管理系统的设计与实现(Java项目编程实战+完整源码+毕设文档+sql文件+学习练手好项目).zip

      本美发门店管理系统有管理员和用户两个角色。用户功能有项目预定管理,产品购买管理,会员充值管理,余额查询管理。管理员功能有个人中心,用户管理,美容项目管理,项目类型管理,项目预定管理,产品库存管理,产品购买管理,产品入库管理,会员卡管理,会员充值管理,余额查询管理,产品类型管理,系统管理等。因而具有一定的实用性。 本站是一个B/S模式系统,采用SSM框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得美发门店管理系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高美发门店管理系统管理效率。 关键词:美发门店管理系统;SSM框架;MYSQL数据库;Spring Boot 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1 MYSQL数据库 2 2.2 B/S结构 3 2.3 Spring Boot框架简介 4 3系统分析 4 3.1可行性分析 4 3.1.1技术可行性 4 3.1.2经济可行性 5 3.1.3操作可行性 5 3.2系

      Python实现基于SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测的详细项目实例(含完整的程序,GUI设计和代码详解)

      内容概要:本文档介绍了基于SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测的详细项目实例,重点讲述了该项目的背景、目标、挑战与解决方案、技术特点、应用领域等方面的内容。文档详细记录了从项目启动、数据预处理、算法设计(SSA优化CNN-GRU模型)、构建与评估模型到实现美观的GUI界面整个过程,并讨论了防止过拟合的技术如正则化、早停和超参数优化。另外还涵盖了项目扩展的可能性、部署和应用策略、需要注意的地方以及未来改进的方向。全文强调了模型的泛化能力和计算效率,展示了该混合算法模型在实际应用中的优越性能。 适合人群:具备一定的Python编程经验及机器学习基础知识的研究人员和技术人员;对深度学习、智能优化算法及实际应用感兴趣的学者和从业者;寻求提升数据分析和预测准确性的金融分析师、数据科学家等相关专业人士。 使用场景及目标:本文档非常适合用作学习和参考资料,以掌握如何将SSA、CNN与GRU三种先进技术结合起来进行复杂的分类和预测问题求解。具体应用场景包括但不限于以下几个方面:金融领域——股票价格预测;医疗保健领域——辅助诊断;工业制造——预防性维护;智能家居——个性化服务;以及其他涉及到时序数据分析和多模态数据处理的场合。文档既包含了理论知识又提供了完整的源代码示例,可以帮助读者理解算法原理并通过实践中加深对其的认识。 其他说明:该项目不仅仅是关于算法的设计实现,更是有关于系统的整体架构规划以及工程上的考量,比如环境准备(确保环境洁净、必要包的安装等)、数据准备、GPU配置支持等等。同时文中给出了详细的代码片段,方便开发者理解和复现实验成果。值得注意的是,虽然文中提供了一套通用解决方案,但在真实场景下还需要针对性的调整参数或修改网络结构来达到最好的性能效果。此外,对于追求更高的预测精度或解决更大规模的问题,作者建议进一步探索深度强化学习等高级技术和多任务学习策略,并且考虑使用增量学习让模型能够适应新数据而不必重新训练整个模型。最后提到安全性和隐私保护也是项目实施过程中的重要因素,要妥善保管用户的敏感信息并且做到合法合规地收集和使用数据。

    Global site tag (gtag.js) - Google Analytics