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

ExtJS 技巧笔记

 
阅读更多
http://d.download.csdn.net/down/1169034/city2046

Ext.fly(grid.getView().getRow(0)).slideIn('t'); //选择第一条有从上往下的插入效果
  Ext.fly(grid.getView().getRow(0)).frame('#cadaf9',3);//选择一条记录带蓝色光晕效果
  enableKeyEvents:true //激活键盘事件 ,TextField 的键盘事件默认是关闭的
  cmp.el.mask('正在发送...', 'x-mask-loading'); //给组件上遮罩
  cmp.el.unmask(); //隐藏遮罩
  this.previousSibling();//当前组件的前一个组件(同一个容器)
  this.nextSibling(); //当前组件的后一个组件(同一个容器)
  
  //给组件增加快捷键(CTRL + 回车)
  {
   xtype: 'textarea',
   listeners: {
   'render': function (input) {
   new Ext.KeyMap(input.getEl(), [{
   key: 13,
   ctrl: true,
   fn: function () {},
   scope: this
   }]);
   }
   }
  }
  
  
  
  
  //在分页组件前面添加组件
  var page = new Ext.PagingToolbar({
   store: store,
   displayInfo: true,
   pageSize: 10
  });
  page.insert(0, '-');
  page.insert(0, { //添加一个日期组件
   xtype: 'datefield',
   name: 'chatdate',
   format: 'Y-m-d',
   value: new Date()
  });
  
  //XTemplate的使用示例(读取store加载的数据来渲染)
  {"root":[{"date":"2009-09-07T15:52:45","sender":"廖瀚卿","text":"你好asdf"},{"date":"2009-09-07T15:52:51","sender":"asdf","text":"你好廖瀚卿"},{"date":"2009-09-07T15:52:59","sender":"asdf","text":"我这个是测试的,你那里能看到吗?"},{"date":"2009-09-07T15:53:09","sender":"廖瀚卿","text":"能看到,很不错哦:)"},{"date":"2009-09-07T15:53:23","sender":"asdf","text":"鸭版斑斑啦"},{"date":"2009-09-07T15:53:31","sender":"廖瀚卿","text":"呵呵,你真搞笑"},{"date":"2009-09-07T15:53:45","sender":"廖瀚卿","text":"对了。你好吗?\n"},{"date":"2009-09-07T15:53:52","sender":"asdf","text":"我很好,真的:)"},{"date":"2009-09-07T15:54:00","sender":"asdf","text":"你好不好,告诉我啊"},{"date":"2009-09-07T15:54:06","sender":"廖瀚卿","text":"我也很好:0"}],"success":true,"totalProperty":10}
  //以上是store加载时火狐检测的json字符串,我们可以监听store的load事件来做XTemplate的渲染
  
  var tpl = new Ext.XTemplate(
   '',
   '{data:this.parseSender()}: {data:this.parseDate}

',
   '
{data:this.parseText}

', '
',
   {
   compiled: true,
   parseSender: function (json) {
   return json.sender;
   },
   parseDate: function (json) {
   return Ext.util.Format.date(json.date, 'Y-m-d H:i:s');
   },
   parseText: function (json) {
   return json.text
   }
   }
  );
  
  var store = new Ext.data.Store({
   url: 'findChatHistory.action',
   reader: new Ext.data.JsonReader({
   totalProperty: 'totalProperty',
   root: 'root'
   },
   ['mid', 'id', 'sender', 'text', {
   name: 'date',
   dateFormat: "Y-m-dTH:i:s",
   //struts2的json-plugin处理日期默认格式化为这种方式,要想在extjs中正确处理日期格式,这里很重
   type: 'date'
   }]),
   listeners: {
   'load': function (sd, records, options) {
   /*console.log(records);//其实records是一个对象数组,输出内容和格式如下,从格式可以得知真正的数据在data=Object里面
   [Object phantom=true id=ext-record-26 data=Object, Object phantom=true id=ext-record-27 data=Object, Object phantom=true id=ext-record-28 data=Object, Object phantom=true id=ext-record-29 data=Object, Object phantom=true id=ext-record-30 data=Object, Object phantom=true id=ext-record-31 data=Object, Object phantom=true id=ext-record-32 data=Object, Object phantom=true id=ext-record-33 data=Object, Object phantom=true id=ext-record-34 data=Object, Object phantom=true id=ext-record-35 data=Object]*/
   tpl.overwrite(Ext.fly('history'), records); //records为服务器返回的所有记录
   }
   }
  });
  
  
  //变换元素大小以及动画的特效
  function scaleElement(id) {
   var el = Ext.get(id);
   el.scale(el.getWidth() /1.2,el.getHeight() /1.2,{
   easing: 'backBoth',//膨胀效果(先变大,再变得小于目标尺寸,最后恢复目标尺寸)
  // easing: 'backIn',//膨胀效果(先变得大于目标尺寸,最后恢复目标尺寸)
  // easing: 'backOut',//膨胀效果(先变得小于目标尺寸,最后恢复目标尺寸)
  // easing: 'bounceBoth',//来回大小振动后恢复目标尺寸
  // easing: 'bounceIn',//来回大小振动后恢复目标尺寸(变大动作幅度大一点)
  // easing: 'bounceOut',//来回大小振动后恢复目标尺寸(变小动作幅度大一点)
  // easing: 'easeBoth',//就是尺寸变了.没感觉出来特别的
  // easing: 'easeIn',//就是尺寸变了.没感觉出来特别的
  // easing: 'easeInStrong',//就是尺寸变了.没感觉出来特别的
  // easing: 'easeOut',//就是尺寸变了.没感觉出来特别的
  // easing: 'easeBothStrong',//就是尺寸变了.没感觉出来特别的
  // easing: 'easeNone',//轻轻的就缩小了
  // easing: 'elasticBoth',//感觉很有动力
  // easing: 'elasticIn',//感觉很有动力
  // easing: 'elasticOut',//感觉很有动力
   duration: .35
   });
  }
  
  
  
  //2009-10-9 23:57:18
  //对象属性写法记忆,下面是分页组件里面的一个私有方法
  // private
  doLoad : function(start){
   var o = {}, pn = this.getParams();
   o[pn.start] = start;
   o[pn.limit] = this.pageSize;
   if(this.fireEvent('beforechange', this, o) !== false){
   this.store.load({params:o});
   }
  }
  //其中 o[pn.start] 等同于 o.start,也就是说o[pn.start]等同于o['start']
  //o['page.params.manager'] 这种写法是有效的,而o.page.params.manager却不一定正确
  
  
  
  // 2009-10-17 0:10:20
  //回调函数应用
  //extjs给我们提供的方法都很人性化,有很多方法都有回调函数,但是有些方法却没有,我们可以自己定义我们的回调函数
  var data = {
   name: 'Jack Slocum',
   title: 'Lead Developer',
   company: 'Ext JS, LLC',
   email: 'jack@extjs.com',
   address: '4 Red Bulls Drive',
   city: 'Cleveland',
   state: 'Ohio',
   zip: '44102',
   drinks: ['Red Bull', 'Coffee', 'Water'],
   kids: [{
   name: 'Sara Grace',
   age:3
   },{
   name: 'Zachary',
   age:2
   },{
   name: 'John James',
   age:0
   }]
  };
  var tpl = new Ext.XTemplate(
   '
Name: {name}

',
   '
Title: {title}

',
   '
Company: {company}

',
   '
Kids: ',
   '',
   '

{name}

',
   '
'
  );
  tpl.overwrite(panel.body, data); // overwrite方法没有给我们提供回调函数
  
  //自定义处理方法
  function myFunction(tpl,el,data,callback){
   tpl.overwrite(el,data);
   callback(); //调用回调函数
  }
  
  //执行我们自定义的方法
  myFunction(tpl,panel.body,functioin(){
   alert('哈哈我执行完了,我是回调函数');
  });
  
  //延迟执行自定义回调函数
  myFunction(tpl,panel.body,(function(){
   alert('哈哈我延迟2秒后执行的回调函数');
   }).defer(2000);
  );
  //ibatis笔记
  #remark:VARCHAR# remark必须是数据库中的字段才能用:VARCHAR来表示类型
  
  
  
  //表单里面显示图片 2009-11-10 11:01:04
  {
   xtype: 'box',
   anchor: '',
   isFormField: true,
   fieldLabel: 'Image',
   autoEl: {
   tag: 'div',
   children: [{
   tag: 'img',
   qtip: 'You can also have a tooltip on the image',
   src: 'http://extjs.com/deploy/dev/examples/shared/screens/desktop.gif'
   },
   {
   tag: 'div',
   style: 'margin:0 0 4px 0',
   html: 'Image Caption'
   }]
   }
  }
  
  
  
  //GridPanel 行编辑器(combo)显示问题 2009-11-10 13:13:33
  //GridPanel/EditorGridPanel中下拉框显示的问题,从后台取值或者前台选择下拉值以后不显示我们制定的DisplayField的value而现实了ValueField的value,做如下处理即可解决
  var index = store.indexOf(grid.getSelectionModel().getSelected());
  var columns = grid.getColumnModel().getColumnsBy(function(c){
   return c.dataIndex == 'vbid'; //ValueField 获得下拉框的列
  });
  var _editor = columns[0].getCellEditor(index); //获得下拉框
  var valueFieldValue = _editor.field.getValue(); //获得id值
  var displayFieldValue = _editor.field.getRawValue(); //获得显示值
  
  //这样我们就可以在编辑行或者添加行的时候向后台同事传递两个value
  //而解决前天总显示id的问题只要写个renderer就可以了
  
  renderer:function(value, cellmeta, record){
   return record.data.brandName;//在有下拉选择框的地方显示DisplayField的value
  }
  
  
  //树节点(TreeNode)图标动态修改 2009-11-22 15:36:52
  var ui = node.getUI();
  ui.removeClass('x-tree-node-leaf'); //去掉之前的根节点样式
  ui.addClass('x-tree-node-expanded'); //设定已展开文件夹样式
  //ui.addClass('x-tree-node-collapsed');//设定合并的文件夹样式
  
  
  又爱又恨的 Ext.form.ComboBox 之 id,hiddenId,name,hiddenName正确用法.
  
  {
   fieldLabel: '材质', //标签名
   xtype: 'combo',
   valueField: 'stuffid', //对应store中的field
   displayField: 'stuffName', //对应store中的field,就是说下拉列表中显示store中这个字段的值
   queryParam: 'stuff.stuffName', //自动完成功能传到后台的查询条件名字
   typeAhead: true,
   triggerAction: 'all',
   minChars: 1, //自动完成功能一个字符就开始出发查询动作
   listWidth: 250, //下拉列表的宽度
   allowBlank: false, //不能为空
   selectOnFocus: true, //获得焦点就下拉
   pageSize: 10, //下拉列表分页
   id: 'materials.stuffName', //当前下拉框的id
   name: 'materials.stuffName', //当前下拉框的name
   hiddenId: 'materials.stuffid', //隐藏域的id
   hiddenName: 'materials.stuffid', //隐藏域的name
   submitValue:true, //当前下拉框中显示的文本是否提交
   value: materials.stuffName, /当前表单存储的是名字
   hiddenValue:materials.stuffid,//隐藏域存储的是id
   ref: '../../../../comboStuff', //方便他父容器引用
   store: {
   xtype: 'store',
   url: 'findStuffList.action',
   paramNames: {
   start: 'page.start',
   limit: 'page.limit'
   }, baseParams: {
   'page.start': 0,
   'page.limit': 10
   }, reader: new Ext.data.JsonReader({
   totalProperty: 'totalProperty',
   root: 'root'
   }, [{
   name: 'stuffid' //对应valueField
   }, {
   name: 'stuffName' //对应displayField
   }])
   }
  }
  
  
  以上代码会在表单中生成如下html代码
  
    style="width: 162px;">
  
      class=" x-form-text x-form-field " style="width: 145px;" title="">
      id="ext-gen135">
分享到:
评论

相关推荐

    Extjs 5 学习笔记

    ### Extjs 5 学习笔记之 SenchaCmd 深入解析 #### 一、SenchaCmd 的简介 SenchaCmd 是一个跨平台的命令行工具,它为基于 ExtJS 和 Sencha Touch 应用程序的开发周期提供了全面的支持。从创建应用程序的基础结构到...

    ExtJS4中文教程2 开发笔记 chm

    ExtJS4学习笔记(九)---ExtJS4 EditGrid(可编辑的Grid) ExtJS4学习笔记(二)---HBox的使用 ExtJS4学习笔记(五)---Grid分页 ExtJS4学习笔记(八)---Grid多选 全选 ExtJS4学习笔记(六)---多表头Grid ExtJS4学习笔记(十)--...

    extjs 学习心得笔记

    在探讨《ExtJS学习心得笔记》这一主题时,我们不仅会深入理解ExtJS框架的核心概念与实践技巧,还会从新手的角度出发,提炼出一系列有助于快速上手的学习策略,避免常见的学习陷阱,确保学习过程高效而有成效。...

    ExtJs学习笔记,共30讲

    ExtJs 是一个强大的JavaScript库,主要用于构建富客户端Web应用程序。这个学习笔记涵盖了从基础到高级的多个主题,...每个章节都深入到ExtJs框架的不同层面,提供实践示例和技巧,是学习和提升ExtJs技能的宝贵资源。

    Extjs复习笔记(二十)-- tree和grid结合

    在"Extjs复习笔记(二十)-- tree和grid结合"这篇博文中,博主探讨了如何在EXTJS中实现树形视图(Tree)与网格视图(Grid)的融合。 Tree组件在EXTJS中通常用于显示具有层级关系的数据,例如文件系统、组织架构等。...

    Extjs4.0开发笔记

    EXTJS4.0 开发笔记主要探讨了如何利用EXTJS4.0的MVC模式进行Web应用程序的构建,特别是员工管理系统的开发。在MVC模式下,开发过程更具有...通过阅读这些笔记,开发者能够深入理解EXTJS4.0的MVC架构并掌握其开发技巧。

    Extjs学习笔记之九 数据模型(上)

    ### Extjs 学习笔记之九:数据模型(上) #### 概述 本文将深入探讨Extjs框架中至关重要的组成部分——数据模型。数据模型在Extjs中扮演着核心角色,它不仅为开发者提供了强大的数据处理能力,还极大地简化了前端与...

    Extjs4开发笔记(收集整理).pdf

    作者在笔记中也提到了Extjs4的一些小技巧和心得,这些都是在实际开发过程中积累下来的宝贵经验。 最后,Extjs4框架允许开发者利用面向对象的编程方法来进行开发,MVC(Model-View-Controller)模式的采用,使得代码...

    ExtJS使用笔记

    ExtJS是一个开源的JavaScript库,主要用于...通过本笔记的学习,可以掌握ExtJS在前端开发中的应用,理解各个组件和管理器的使用方法,以及一些针对特定浏览器的布局技巧,为创建美观、高效的用户界面打下坚实的基础。

    extJs+2.1学习笔记.pdf

    通过以上章节的学习,读者将逐步掌握ExtJS 2.1的基本概念和实际应用技巧,为构建高质量的Web应用程序打下坚实基础。同时,随着对框架深入的理解,开发者还可以探索更高级的主题,如自定义组件、数据绑定、高级布局等...

    Extjs3.4+Ext-core.pdf+轻松搞定Extjs.pdf

    `Extjs学习笔记.docx` 可能是一位开发者或讲师整理的学习心得和笔记,可能包含了一些个人的理解、技巧、常见问题解答和解决方案。这种类型的文档通常会提供一些实战中的经验和见解,对于深化理解和解决问题可能非常...

    关于ExtJS3.3版本学习笔记

    【标题】"关于ExtJS3.3版本学习笔记"揭示了本文档主要关注的是ExtJS框架的一个特定历史版本,即3.3版。ExtJS是一个广泛使用的JavaScript库,专为构建富互联网应用程序(RIA)而设计。这个版本的学习笔记可能包含有关...

    Extjs参考文档

    《EXT学习笔记.doc》可能是个人或团队在学习EXTJS过程中整理的笔记,包含了他们的实践经验、技巧和问题解决方案,对于学习EXTJS非常有帮助。 《EXT核心API详解.pdf》是对EXTJS核心API的深入解析,适合想要深入研究...

    extjs+韩顺平—玩转oracle视频教程笔记

    在"韩顺平—玩转oracle视频教程笔记"中,你将深入学习Oracle的使用技巧和管理方法,涵盖数据库设计、SQL查询、存储过程、触发器、索引优化等多个方面。教程可能还会涉及数据库备份与恢复、性能监控与调优,这些都是...

    ExtJs中引用的三个js

    ExtJS 是一个强大的JavaScript 框架,专用于构建富客户端Web应用程序。它提供了一整套组件、...同时,持续学习和实践是提升技能的关键,不断探索ExtJS的新特性、最佳实践和优化技巧,会使你在Web开发领域更上一层楼。

    extjs学习网页学习资料

    这些笔记通常包含了在实际开发过程中遇到的问题、解决方案、最佳实践以及一些技巧性内容。比如,可能会讲解如何自定义组件、如何优化性能、如何处理EXTJS与后端服务器的数据交互等。 在文件名"extjsѧϰIE"中,"ѧ...

    用Extjs+asp.net写的一个例子 适合刚刚学习Extjs的朋友

    ExtJS 是一个强大的JavaScript前端框架,它提供了丰富的用户界面组件...通过阅读提供的文档和笔记,你不仅可以了解ExtJS控件的使用,还能掌握前后端交互的基本技巧。对于深入理解这两者的结合,这将是一个很好的起点。

    ExtJS4.0 MVC 学习资料集合

    这份笔记涵盖了作者在学习ExtJS4.0过程中积累的实战经验和技巧。它可能涉及如何创建一个基本的MVC应用、自定义组件的开发、布局管理、表单处理、数据绑定等方面。此外,还可能包含了一些常见问题的解决方案,对于...

    extjs study

    3. **EXT_JS实用开发指南_个人整理笔记.docx**:这可能是作者在实践过程中总结的技巧和最佳实践,涵盖了一些实际开发中的问题解决策略,如性能优化、自定义组件的创建、国际化支持、拖放功能和动画效果的实现等。...

Global site tag (gtag.js) - Google Analytics