近期开发一个项目要使用到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的解决方法)
- Ext.override(Ext.menu.DateMenu,{
- render : function (){
- Ext.menu.DateMenu.superclass.render.call(this );
if (Ext.isGecko){
- this .picker.el.dom.childNodes[0].style.width = '178px' ;
- this .picker.el.dom.style.width = '178px' ;
- }
- }
-
});
还有一种方法是:
搜索ext-all.css,找到这一行:
Java代码
-
.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代码
-
.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;}
(测试通过)
//store和grid绑定不了的问题
一般要考虑传回来的数据格式是否正确,少了个逗号还是少了些什么
Json的格式是:[{},{},{}]
//reader,store,proxy,record的作用与关系
Record:数据以record(相当于行)的类型的数据进行存储
Store:数据存储器,保存与管理数据
Reader:数据解析器,用来解析读取数据
Proxy:数据代理,代理各种数据源
关系:store通过reader来解析proxy提供的数据源的数据,每个store都有两个比较关键的参数reader和proxy
例如:
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中没有定义,而上面这里使用了某个字段,则该字段的数据是没有的,因为数据是通过reader从proxy中读取的,若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 是基于 Yahoo! UI Library (YUI) 的扩展,主要用于构建富客户端的 Web 应用程序。这篇学习笔记主要介绍了 Yui_ext 的基础知识,适合对 JavaScript 和 HTML DOM 有一定了解的初学者。 ...
### Gwt-ext学习笔记之基础篇 #### 一、安装CypalStudio工具 为了能够开始Gwt-ext的学习之旅,首先需要确保开发环境已经搭建好。CypalStudio是一款非常实用的工具,它能帮助开发者更高效地进行GWT项目的开发。 1....
总结而言,这份“EXT_JS实用开发指南_个人整理笔记”可能涵盖了EXT_JS的基础知识、组件使用、数据管理、事件处理、性能优化及高级特性等多个方面,对于EXT_JS开发者来说是一份极具价值的学习资料。通过深入阅读和...
EXT_JS实用开发指南主要涵盖了EXT_JS框架的基础使用和核心组件,这是基于JavaScript的富客户端应用开发库,特别适合构建桌面级的Web应用。以下是对EXT_JS开发的一些关键知识点的详细解释: 1. **引入EXT_JS库**: ...
EXT_JS实用开发指南_个人整理笔记,代码、注释、图片描述浅显易懂,详细描述了ext框架的各个组件的样式和使用
EXT_JS是一种基于JavaScript的富客户端应用开发框架,主要用于构建用户界面。这个开发指南主要涵盖了EXT_JS的基本使用方法和核心概念,对于入门EXT_JS的开发者来说是十分宝贵的资源。以下是EXT_JS的一些关键知识点:...
2. EXT_JS实用开发指南_个人整理笔记.docx:这是一份个人整理的学习笔记,可能包含了一些实战经验,对于学习EXT JS的实际应用和解决常见问题很有帮助。 3. ExtJS实用开发指南.pdf:同名但格式不同的文档,可能提供了...
当涉及到表单时,`Ext.getCmp("formId").getForm()`返回一个`Ext.form.FormPanel`实例,这允许开发者进一步操作表单,比如提交表单数据、验证字段等。 ### 数据绑定与组合框操作 在Ext JS中,组合框(`combo`)是一...
"新建 文本文档.txt"可能包含一些笔记或说明,"docs"和"ext源代码"则分别代表额外的文档资料和源代码,进一步加深学习和理解。 通过这些资源,开发者不仅可以学习到ExtJS的基本概念和组件使用,还可以看到实际项目...
EXT_JS实用开发指南_个人整理笔记.docx可能包含了作者在学习EXT JS过程中的总结和实践经验,可能涵盖了组件的创建、数据管理、事件处理、性能优化等方面的内容。文档可能会对EXT JS的API有详尽的解释,同时可能包含...
### JVM学习笔记(一) #### 一、JVM概述与工具使用 JVM(Java Virtual Machine)是Java语言的核心组成部分之一,它为Java程序提供了一个跨平台的运行环境。本篇学习笔记主要介绍如何利用一系列工具来查看和监控JVM...
1. Ext.onReady函数:在EXTJS库文件及页面内容加载完后,EXTJS会执行Ext.onReady中指定的函数。 2. 控件的使用:使用EXTJS提供的控件,如面板、选项板、表格、树、窗口、菜单、工具栏、按钮等等。 三、EXTJS控件 ...
7. **EXT_JS实用开发指南**:`EXT_JS实用开发指南_个人整理笔记.docx`可能是作者的个人学习心得,其中包含了实践中遇到的问题和解决方案,对于初学者来说,这样的经验分享非常有价值。 8. **PDF和TXT文档**:`extjs...
VxWorks 支持多种文件系统,如VFAT、EXT2等,允许存储和管理数据文件,满足不同环境下的数据存储需求。 5. **虚拟内存(VxVMI)与共享内存(VxMP)** VxVMI 提供了虚拟内存管理,允许多个任务高效地共享内存资源...
理解Ext Core是深入学习ExtJS的关键,因为它是整个库的基础,包含了许多核心的实用函数和类。 `轻松搞定Extjs.pdf` 很可能是一份详细的教程或指南,它可能涵盖了ExtJS的基本概念、组件使用、布局管理、数据绑定、...
17. **extJs 2.0 学习笔记(Ext.Panel篇一)** Panel的学习从基础开始,包括创建Panel、设置属性、嵌套组件等,是掌握ExtJS组件模型的基础。 通过以上章节的学习,读者将逐步掌握ExtJS 2.1的基本概念和实际应用...
这篇笔记不仅适合初学者,也对有经验的Linux工程师有价值,它提供了实用的命令行操作示例和系统管理技巧,有助于提高日常运维效率。同时,笔记中提到的QQ群可以作为学习交流的平台,鼓励成员相互帮助,共同进步。