`
echoetang
  • 浏览: 40414 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

EXT实用笔记(一)

阅读更多

近期开发一个项目要使用到EXTJS,从完全不懂摸索着进行,到将项目完成,过程中发现很多问题,因为是新手,我根据我的学习方式将我的问题记录下来了,方便遇到相同问题的人们,里面部分是网上收集的,大部分是自己总结的,

转载请注明出处(http://echoetang.iteye.com/admin/blogs/510499 By:Gxmis-alextang)

//Combobox动态加载数据的方法

//子系统版本的数据(多个地方共用)                                                   

 var updateversionstore = new Ext.data.Store({

             proxy:new Ext.data.HttpProxy({url:'findsystemversion.action'}),

             reader:new Ext.data.ArrayReader({},[{name:'value'},{name:'text'}])

                                                    });

/////////////////////////////////////////////////////////////////////////////////////////                            {

              xtype:'combo',

              fieldLabel:'当前版本',

              width:300,

              name:'sysversion.currentversion',

              id :'veraddsubcurrentversion',

              allowBlank:false,

              editable:false,

              store:updateversionstore,

                                          //emptyText:'请选择子系统版本',

                                          //表示需要的数据已经读取到本地,不需要到后台去读取

                                          mode:'remote',

                                          triggerAction:'all',

                                          valueField:'value',

                                          displayField:'text',

                                      listeners:{                                        

                                          //展开的时候就加载数据

                                          "expand":function(){                        

                       //为右边的系统版本号的combox加载数据

                       updateversionstore.removeAll();                                            updateversionstore.load({params:{subSysName:selectedSunSystemName}});     

                                          }

                                               }

              }

 

 

//Datefield控件设置值的方法

Ext.getCmp('saveversiondate').setValue(new Date())

Ext.getCmp('saveversionvalidate').setValue(new Date(oneRecord.data.versionvalidate));

 

-àoneRecord.data.versionvalidate是一个字符串:格式为2007/08/07 或者 2007-08-/07都可以

 

 

//关于日期控件(DateField)在FireFox3下过长的解决办法

FireFox 3.x 出来了一段时间了,很多用户依然使用的是EXTJS 2.02的版本。(很多原因......,日期控件在FireFox 3.x 下会被拉得很长很长。
这一个问题官方已经解决了。解决办法:

你必须在CSS中明确设置它的宽度。

在文件引用的css文件中加上这个css样式就可以了

.x-date-middle {  

    padding-top:2px;padding-bottom:2px;  

    width:130px; /* FF3 */   

}   

另一种解决办法:
(来自lonelyblue的解决方法)

 

  1. Ext.override(Ext.menu.DateMenu,{     
  2.     render : function (){     
  3.         Ext.menu.DateMenu.superclass.render.call(this );     

       if (Ext.isGecko){     

  1.             this .picker.el.dom.childNodes[0].style.width =  '178px' ;     
  2.             this .picker.el.dom.style.width =  '178px' ;     
  3.         }     
  4.     }     
  5. });   

还有一种方法是:

搜索ext-all.css,找到这一行:

Java代码

  1. .x-date-picker{border:1px solid #1b376c;border-top:0 none;background:#fff;position:relative;}  

.x-date-picker{border:1px solid #1b376c;border-top:0 none;background:#fff;position:relative;}

 替换为:

Java代码

  1. .x-date-picker{border:1px solid #1b376c;border-top:0 none;background:#fff;position:relative;width:10px;}  

.x-date-picker{border:1px solid #1b376c;border-top:0 none;background:#fff;position:relative;width:10px;}

 

(测试通过)

 

 

//storegrid绑定不了的问题

一般要考虑传回来的数据格式是否正确,少了个逗号还是少了些什么

Json的格式是:[{},{},{}]

 

//reader,store,proxy,record的作用与关系

Record:数据以record(相当于行)的类型的数据进行存储

Store:数据存储器,保存与管理数据

Reader:数据解析器,用来解析读取数据

Proxy:数据代理,代理各种数据源

关系:store通过reader来解析proxy提供的数据源的数据,每个store都有两个比较关键的参数readerproxy

 

例如:

var cm = new Ext.grid.ColumnModel([

//设置显示行号

new Ext.grid.RowNumberer(),

{header:'',width:200,dataIndex:'warninginfo',sortable:true},

{header:'系统编号',width:100,dataIndex:'termianlid',sortable:true},

{header:'当前软件版本',width:100,dataIndex:'currentversion',sortable:true},

{header:'计划升级版本',width:100,dataIndex:'planversion',sortable:true},

{header:'备注',width:100,dataIndex:'remark',sortable:true}

//上面的dataIndex就是列对应记录集的字段,这些字段对应在下面的reader中定义,若下面的reader中没有定义,而上面这里使用了某个字段,则该字段的数据是没有的,因为数据是通过readerproxy中读取的,reader没有定义某个字段就表示没有解析出该字段的数据,相反,reader解析(定义)的字段不一定都要在上面使用,上面只是使用了部分的字段

]);

var reader = new Ext.data.JsonReader({//这里没有参数也要空出来,是用来放root : 'list',

                             totalProperty : 'totalCount'默认参数的}, [

                                             {name: 'warninginfo'},

                                             {name: 'termianlid'},

                                             {name: 'currentversion'},

                                             {name: 'planversion'} ,

                                             {name: 'remark'}

                                          ]);

//上面的字段可以和返回的json数据字段一致,也可以不一致,不一致的是有要用映射进行对应,否则也无法读取到数据,例如读取的后台返回的json数据为: [{'warninginfo':'!警告,版本不一致!','termianlid':'106','currentversion':'2.2','planversion':'3.3','remark':'123123'},{'warninginfo':'!警告,版本不一致!','termianlid':'108','currentversion':'1.1','planversion':'3.3','remark':'asd123'},{'warninginfo':'!警告,版本不一致!','termianlid':'110','currentversion':'2.2','planversion':'3.3','remark':'123'}]
可看见上面的字段(reader中的字段)和返回数据的key是一致的,当采用不一致的方法的时候就要这样:

{name: 'tt',mapping: 'warninginfo'},

//这里映射的是json数据中的key,数组类型的时候还可以使用索引: mapping:0

                                             {name: 'termianlid'},

                                             {name: 'currentversion'},

                                             {name: 'planversion'} ,

                                             {name: 'remark'}

 

 

                   var urlPath = 'findbysubsystem.action';//请求的页面

                   var requestProxy=new Ext.data.HttpProxy({url:urlPath}); //设置的一个代理

                  

                   var store =  new Ext.data.Store({//关联代理和reader

                                                        reader: reader,

                                                        proxy: requestProxy

                                               });

 

 

//Json数据的格式是:

[{‘name1’:’value1’,’name2’:’value2’},{‘name3’:’value3’,’name4’:’value4},{‘name5’:’value5’,’name6’:’value6}]

 

那样将这个字符串解析成json对象就有多个值,即可以这样访问

obj[0] 拿到的是第1{}中的值(注意obj是转换后的json对象)

 

要获取第一个{}的数据(json对象obj的第一个数据)就可以这样: obj[0].name1 , obj[0].name2

 

 

//设置表格有排序的功能和设置标题显示方式的方法

var cmWest = new Ext.grid.ColumnModel([

{header:'编码',width:85,dataIndex:'code',sortable:true},

{header:'软件名称',width:100,dataIndex:'content',sortable:true}

]);

 

var systemGrid = new Ext.grid.GridPanel({

     //title:'软件类型',

     //layout:'form',

     border:true,

     width:190,

     region:'west',

     store:storeWest,

     loadMask:true,

     columnLines:true,

     cm:cmWest,

     sm:smWest,

     

     //设置表格标题的显示属性

     viewConfig:{

        columnsText:'表格样式',

        //scrollOffset:20,

        sortAscText:'升序排列',

        sortDescText:'降序排列',

        forceFit:true

     }

    });

 

//ext中字符串转换成数组

 

//Combo获取显示的值

   getRawValue()

 

 

//操作json格式的字符串变成json对象,并操作它内部的属性

var obj = Ext.decode(response.responseText);

for(var i=0; i<obj.length;i++)

         {

     var rec = new sysVersionRecord({sysversions:obj[i].sysversion});

     updateversionstore.insert();

                                                                 }

 

//添加事件监听和获取树节点的文本

listeners:{

       "click":function(_node,_event){alert(_node.text)}

      }

 

 

// 定义的一个函数

var searchCompany = function() {

    // 传参数一定要用这种方式,否则翻页的时候不会根据这些参数查询

    ds_company.baseParams.conditions = text_search_company.getValue();

    ds_company.load({

       params : {

           start : 0,

           limit : 20

       }

    });

}

 

//获取record的数据,和添加事件的另一种方法

systemGrid.on('rowClick',function(grid,rowIndex,event){

       alert(grid.getStore().getAt(rowIndex).data['code']);

       javascript:goto('showdata.html','软件版本记录') ;

       });

 

//获取record中的数据方法

var record = dataGridPanel.getSelectionModel().getSelected();

                         if (record) {

                         addWindow.setTitle('修改数据');

                         alert(record.data.systemversion);

 

分享到:
评论

相关推荐

    Yui_ext 学习笔记

    【Yui_ext 学习笔记】 Yui_ext 是基于 Yahoo! UI Library (YUI) 的扩展,主要用于构建富客户端的 Web 应用程序。这篇学习笔记主要介绍了 Yui_ext 的基础知识,适合对 JavaScript 和 HTML DOM 有一定了解的初学者。 ...

    Gwt-ext学习笔记之基础篇

    ### Gwt-ext学习笔记之基础篇 #### 一、安装CypalStudio工具 为了能够开始Gwt-ext的学习之旅,首先需要确保开发环境已经搭建好。CypalStudio是一款非常实用的工具,它能帮助开发者更高效地进行GWT项目的开发。 1....

    EXT_JS实用开发指南_个人整理笔记.rar

    总结而言,这份“EXT_JS实用开发指南_个人整理笔记”可能涵盖了EXT_JS的基础知识、组件使用、数据管理、事件处理、性能优化及高级特性等多个方面,对于EXT_JS开发者来说是一份极具价值的学习资料。通过深入阅读和...

    EXT_JS实用开发指南_个人整理笔记

    EXT_JS实用开发指南主要涵盖了EXT_JS框架的基础使用和核心组件,这是基于JavaScript的富客户端应用开发库,特别适合构建桌面级的Web应用。以下是对EXT_JS开发的一些关键知识点的详细解释: 1. **引入EXT_JS库**: ...

    EXT_JS实用开发指南_个人整理笔记.doc

    EXT_JS实用开发指南_个人整理笔记,代码、注释、图片描述浅显易懂,详细描述了ext框架的各个组件的样式和使用

    EXT_JS实用开发指南_个人整理笔记.docx

    EXT_JS是一种基于JavaScript的富客户端应用开发框架,主要用于构建用户界面。这个开发指南主要涵盖了EXT_JS的基本使用方法和核心概念,对于入门EXT_JS的开发者来说是十分宝贵的资源。以下是EXT_JS的一些关键知识点:...

    ext JS 源码和学习资料

    2. EXT_JS实用开发指南_个人整理笔记.docx:这是一份个人整理的学习笔记,可能包含了一些实战经验,对于学习EXT JS的实际应用和解决常见问题很有帮助。 3. ExtJS实用开发指南.pdf:同名但格式不同的文档,可能提供了...

    ext 学习笔记

    当涉及到表单时,`Ext.getCmp("formId").getForm()`返回一个`Ext.form.FormPanel`实例,这允许开发者进一步操作表单,比如提交表单数据、验证字段等。 ### 数据绑定与组合框操作 在Ext JS中,组合框(`combo`)是一...

    网上流行的js的UI设计框架ext

    "新建 文本文档.txt"可能包含一些笔记或说明,"docs"和"ext源代码"则分别代表额外的文档资料和源代码,进一步加深学习和理解。 通过这些资源,开发者不仅可以学习到ExtJS的基本概念和组件使用,还可以看到实际项目...

    ext教程

    EXT_JS实用开发指南_个人整理笔记.docx可能包含了作者在学习EXT JS过程中的总结和实践经验,可能涵盖了组件的创建、数据管理、事件处理、性能优化等方面的内容。文档可能会对EXT JS的API有详尽的解释,同时可能包含...

    JVM学习笔记(一)

    ### JVM学习笔记(一) #### 一、JVM概述与工具使用 JVM(Java Virtual Machine)是Java语言的核心组成部分之一,它为Java程序提供了一个跨平台的运行环境。本篇学习笔记主要介绍如何利用一系列工具来查看和监控JVM...

    EXTJS实用开发指南_个人整理笔记.pdf

    1. Ext.onReady函数:在EXTJS库文件及页面内容加载完后,EXTJS会执行Ext.onReady中指定的函数。 2. 控件的使用:使用EXTJS提供的控件,如面板、选项板、表格、树、窗口、菜单、工具栏、按钮等等。 三、EXTJS控件 ...

    Ext 资料snow

    7. **EXT_JS实用开发指南**:`EXT_JS实用开发指南_个人整理笔记.docx`可能是作者的个人学习心得,其中包含了实践中遇到的问题和解决方案,对于初学者来说,这样的经验分享非常有价值。 8. **PDF和TXT文档**:`extjs...

    vxworks读书笔记

    VxWorks 支持多种文件系统,如VFAT、EXT2等,允许存储和管理数据文件,满足不同环境下的数据存储需求。 5. **虚拟内存(VxVMI)与共享内存(VxMP)** VxVMI 提供了虚拟内存管理,允许多个任务高效地共享内存资源...

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

    理解Ext Core是深入学习ExtJS的关键,因为它是整个库的基础,包含了许多核心的实用函数和类。 `轻松搞定Extjs.pdf` 很可能是一份详细的教程或指南,它可能涵盖了ExtJS的基本概念、组件使用、布局管理、数据绑定、...

    extJs+2.1学习笔记.pdf

    17. **extJs 2.0 学习笔记(Ext.Panel篇一)** Panel的学习从基础开始,包括创建Panel、设置属性、嵌套组件等,是掌握ExtJS组件模型的基础。 通过以上章节的学习,读者将逐步掌握ExtJS 2.1的基本概念和实际应用...

    Linux实战工程师笔记

    这篇笔记不仅适合初学者,也对有经验的Linux工程师有价值,它提供了实用的命令行操作示例和系统管理技巧,有助于提高日常运维效率。同时,笔记中提到的QQ群可以作为学习交流的平台,鼓励成员相互帮助,共同进步。

Global site tag (gtag.js) - Google Analytics