工作中常用的ExtJS控件使用实例
虽然版本陈旧,框架性的东西还是记录下来,若以后用到好依葫芦画瓢
/**
* Grid
*/
// 表格创建
var sm = new Ext.grid.CheckboxSelectionModel();
var operation = {
header : '操作',
dataIndex : 'orderId',
align : 'center',
width : 43,
renderer : function(val) {
var htmlStr = '<a onclick="payOrdList.edit(' + val + '); return false;" href="#">' +
'<img style="border:0px" alt="编辑" src="' + buildURL('/pub/images/tbtn_amend.gif') + '"/></a>';
htmlStr += '<span>|</span>' +
'<a onclick="payOrdList.remove(' + val + '); return false;" href="#">' +
'<img style="border:0px" alt="删除" src="' + buildURL('/pub/images/tbtn_delete.gif') + '"/></a>';
return htmlStr;
}
};
var cmItems = [sm, operation,
{
header : '列1',
dataIndex : 'payMOnth',
align : 'center',
width : 57
},
{
header : '列2',
dataIndex : 'ordernum',
width : 115
},
{
header : '列3',
dataIndex : 'startTime',
// renderer : formateDateAction,
width : 65
},
{
header : '列4',
dataIndex : 'nexttime',
renderer : function(val) { return formateTime(val); },
width : 116
},
// 其它列项
{
header : '列N',
dataIndex : 'cusstatDesc',
align : 'center',
width : 63
}
];
var cm = new Ext.grid.ColumnModel(cmItems);
var gridConfig = Ext.apply(config, {
sm : sm,
cm : cm,
viewConfig : {
forceFit : false
},
loadMask : true,
store : payOrdGridStore,
tbar : toolbar
});
var grid = new Ext.grid.GridPanel(gridConfig);
var rowdblclick = function(grid, rowIndex, eventobj) {
var store = grid.getStore();
var orderId = store.getAt(rowIndex).id;
// ... ... ...
};
grid.on('rowdblclick', rowdblclick);
// 使用SelectionModel 取已选择的行
var selectedRows = grid.getSelectionModel().getSelections();
if(selectedRows.length === 0) {
Ext.Msg.alert(YoushangTips, '至少选择一条记录!');
return ;
}
for(var i=0; i<selectedRows.length; i++) {
orderIds.push(selectedRows[i].id);
}
// ... ... ...
}
/**
* Grid Plugin(RowExpander),扩展了一个isCollapsed配置项(可指定行默认是否收起)
*/
// 使用
var rx = new Ext.grid.RowExpander({
tpl : new Ext.Template('<div style="margin: 0px 0px 8px 56px;"><ul><li style="list-style-type:disc;"><h2>详细内容:</h2><p style="width: 450px; line-height: 150%; margin: 3px 0px 5px 25px;">{cOntent}<p/></li>{qDesc}</ul></div>'),
isCollapsed : false,
enableCaching : false
});
var cm = new Ext.grid.ColumnModel([rx,{
header : '列1',
dataIndex : 'recIndex',
align : 'center',
width : 56
},
// 其它列项
{
header : '列N',
dataIndex : 'callstatDesc',
// align : 'center',
width : 100
}
]);
var grid = new Ext.grid.GridPanel({
store : store,
tbar : toolbar,
cm : cm,
plugins : rx,
loadMask : true
});
// RowExpander源文件
/*
* Ext JS Library 2.2
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.grid.RowExpander = function(config){
Ext.apply(this, config);
this.addEvents({
beforeexpand : true,
expand: true,
beforecollapse: true,
collapse: true
});
Ext.grid.RowExpander.superclass.constructor.call(this);
if(this.tpl){
if(typeof this.tpl == 'string'){
this.tpl = new Ext.Template(this.tpl);
}
this.tpl.compile();
}
this.state = {};
this.bodyContent = {};
};
Ext.extend(Ext.grid.RowExpander, Ext.util.Observable, {
header: "",
width: 20,
sortable: false,
fixed:true,
menuDisabled:true,
dataIndex: '',
id: 'expander',
lazyRender : true,
enableCaching: true,
isCollapsed : true, // 默认行是否收缩标志
getRowClass : function(record, rowIndex, p, ds){
p.cols = p.cols-1;
var content = this.bodyContent[record.id];
if(!content && !this.lazyRender){
content = this.getBodyContent(record, rowIndex);
}
if(content){
p.body = content;
}
if(this.isCollapsed) return this.state[record.id] ? 'x-grid3-row-expanded' : 'x-grid3-row-collapsed';
if(!this.isCollapsed) return this.state[record.id] ? 'x-grid3-row-collapsed' : 'x-grid3-row-expanded';
},
init : function(grid){
this.grid = grid;
if(!this.isCollapsed) this.lazyRender = false;
var view = grid.getView();
view.getRowClass = this.getRowClass.createDelegate(this);
view.enableRowBody = true;
grid.on('render', function(){
view.mainBody.on('mousedown', this.onMouseDown, this);
}, this);
},
getBodyContent : function(record, index){
if(!this.enableCaching){
return this.tpl.apply(record.data);
}
var content = this.bodyContent[record.id];
if(!content){
content = this.tpl.apply(record.data);
this.bodyContent[record.id] = content;
}
return content;
},
onMouseDown : function(e, t){
if(t.className == 'x-grid3-row-expander'){
e.stopEvent();
var row = e.getTarget('.x-grid3-row');
this.toggleRow(row);
}
},
renderer : function(v, p, record){
p.cellAttr = 'rowspan="2"';
return '<div class="x-grid3-row-expander"> </div>';
},
beforeExpand : function(record, body, rowIndex){
if(this.fireEvent('beforeexpand', this, record, body, rowIndex) !== false){
if(this.tpl && this.lazyRender){
body.innerHTML = this.getBodyContent(record, rowIndex);
}
return true;
}else{
return false;
}
},
toggleRow : function(row){
if(typeof row == 'number'){
row = this.grid.view.getRow(row);
}
this[Ext.fly(row).hasClass('x-grid3-row-collapsed') ? 'expandRow' : 'collapseRow'](row);
},
expandRow : function(row){
if(typeof row == 'number'){
row = this.grid.view.getRow(row);
}
var record = this.grid.store.getAt(row.rowIndex);
var body = Ext.DomQuery.selectNode('tr:nth(2) div.x-grid3-row-body', row);
if(this.beforeExpand(record, body, row.rowIndex)){
this.state[record.id] = true;
Ext.fly(row).replaceClass('x-grid3-row-collapsed', 'x-grid3-row-expanded');
this.fireEvent('expand', this, record, body, row.rowIndex);
}
},
collapseRow : function(row){
if(typeof row == 'number'){
row = this.grid.view.getRow(row);
}
var record = this.grid.store.getAt(row.rowIndex);
var body = Ext.fly(row).child('tr:nth(1) div.x-grid3-row-body', true);
if(this.fireEvent('beforecollapse', this, record, body, row.rowIndex) !== false){
this.state[record.id] = false;
Ext.fly(row).replaceClass('x-grid3-row-expanded', 'x-grid3-row-collapsed');
this.fireEvent('collapse', this, record, body, row.rowIndex);
}
}
});
/**
* Toolbar
*/
var toolbar = new Ext.Toolbar({
border : true,
autoWidth : true,
items : [{
text : '按钮1',
tooltip : '提示',
iconCls : 'tb-distribute',
hidden : !isAdmin,
handler : function() {
// ... ... ...
}
}
, '-', {
text : '按钮2',
tooltip : '提示',
iconCls : 'tb-customerview',
handler : function() {
// ... ... ...
}
}]
});
/**
* DataStore
*/
var myStore = new Ext.data.Store({
proxy : new Ext.data.XXXProxy({
XXXFunc : function(params) {
if (params && !params.start && !params.limit) {
params.start = 0;
params.limit = 700;
}
var conditions = this.filter.getValue();
if(params.ownerId) {
conditions.ownerId = params.ownerId;
}
var data = payOrdApi.findHeadInfo(params.start, params.limit, conditions);
return {
total : data.length,
list : data
};
}.bind(this)
}),
reader : new Ext.data.JsonReader({
root : 'list',
totalProperty : 'total',
id : 'orderId'
} , ['orderId', 'payMOnth', /*... ... ...*/]
)
});
myStore.load({
callback : function() {
// ... ... ...
var num = this.getCount();
// ... ... ...
}
});
/**
* Layout And View
*/
var view = new Ext.Viewport({
layout : 'fit',
items : [{
layout : 'border',
defaults : {autoScroll : true},
items : [{
region : 'north',
title : '上部区域',
height : 265,
shim : false,
collapsible: true,
items : [panel]
}, {
id : 'addTrack_panel',
hidden : !isAssignedFlag,
region: 'east',
title : '右部区域',
width : 405,
bodyStyle : 'padding-top:19px;',
shim : false,
collapsible: true,
collapsed : true,
items : [firstSingleTrackView.panel, singleTrackView.panel]
}, {
region: 'center',
layout : 'fit',
title : '中心区域',
border: true,
shim : false,
items : [grid]
}]
}]
});
view.show();
分享到:
相关推荐
在这个例子中,"extjs 2.2(oozie需要的)" 指出 ExtJS 2.2 是 Oozie 的一部分,可能用于构建其用户界面或者提供某些功能。将 `ext-2.2.zip` 解压到 `/opt/cloudera/parcels/CDH/lib/oozie/libext` 目录下,意味着这个...
在2.2版本中,ExtJS引入了一些新功能和改进,例如增强了表单组件、优化了性能以及增加了新的组件,如树形网格和拖放功能。 实例部分通常包含了一系列的示例代码,演示了如何使用ExtJS创建各种复杂的UI效果。这些...
网络硬盘系统是现代信息化社会中数据存储和共享的重要工具,而本项目“ExtJS2.2网络硬盘系统”就是一个典型的例子,它巧妙地结合了前端的ExtJS2.2框架和后端的SSH(Struts2+Spring+Hibernate)技术栈,构建出一个...
标题 "Extjs2.2+net.mvc+net.spring+NHibernate后台管理系统" 涉及的是一个使用前端框架ExtJS 2.2与后端技术ASP.NET MVC、Spring框架以及ORM工具NHibernate构建的管理系统的实例。这个系统展示了如何将这些技术有效...
这个"ExtJS2.2_图书管理系统"项目是学习和实践Web前端开发、后端Java编程以及数据库管理的好例子。通过分析和研究,开发者不仅可以提升ExtJS的使用技巧,还能了解到完整的Web应用开发流程,对整个系统的设计和实现有...
在这个例子中,主Panel使用`el`属性,而内部的子Panel使用`contentEl`。这导致了`id='panel_contentEl2'`的内容被内嵌到子Panel中,且子Panel的高度限制为150像素。这样,我们可以看到一个嵌套的结构,其中的内容...
EXTJS是一个广泛使用的JavaScript库,特别适用于构建富客户端应用程序。EXT 2.0.2是EXTJS的一个版本,它在2.0的基础上进行了优化和改进,提供了更多的功能和改进的性能。这个版本的EXTJS主要关注用户体验、组件的...
在这个例子中,提供了`ext-2.2.zip`文件,这正是Oozie需要的版本。解压缩此文件后,将包含的库文件放置到Oozie的正确目录下,通常是`oozie-sharelib-extjs`。 **安装Oozie步骤** 1. 下载Oozie的发行版:访问Apache...
为了更好地理解和掌握ExtJS,下面将通过一个简单的示例来演示如何使用ExtJS构建一个基本的Web应用程序。 假设我们要创建一个包含文本框和按钮的简单表单,当点击按钮时,文本框中的内容会显示在一个弹出的对话框中...
在“ExtJS应用教程 提高篇”中,我们看到一系列教程,涵盖了从基础到高级的EXTJS使用技巧,特别是针对EXTJS 2.2版本。教程内容包括了如何使用EXTJS组件,如GridPanel和ComboBox,以及如何动态生成数据。 在提高篇的...
9. **图表和图形**:虽然Ext 2.2的图表功能相对较弱,但仍然有一些基础的图表组件,如条形图、饼图等。通过这些例子,我们可以了解如何在Web应用中呈现数据可视化。 10. **国际化和本地化**:Ext JS支持多语言应用...
在CDH使用oozie 的时候需要安装ext-2.2.zip; 新增和改进的功能包括: 1、FileUploadField 文件上传 体验例子见:http://extjs.com/deploy/dev/examples/form/file-upload.html 2、GMapPanel GMap扩展 体验...
这个压缩包包含的资源显然是关于ExtJS的全面学习材料,包括实际的例子和教程,这将有助于深入理解ExtJS的核心概念和功能。 首先,我们看到有一个名为"ExtJS2.0实用简明教程.chm"的文件,这很可能是一个关于ExtJS ...
本节将通过一个简单的例子演示如何使用ExtJs创建动态页面。 ##### **2.1 解压安装** - 将下载好的压缩包解压至合适的目录(例如`C:\code\Ext\v1.0`)。 - 在此目录下创建一个名为`tutorial`的文件夹,用于存放示例...
extdocs-2.2.zip:这可能是ExtJS 2.2版本的官方文档,包含详细的API参考和教程。文档通常分为几个部分,如类库概述、类系统、组件、布局、数据绑定等。开发者可以查阅这些文档来查找特定函数、配置选项或组件的用法...
- **概述**: FeedViewer是一个展示了ExtJS多种特性的复杂案例,虽然对于初学者来说可能过于复杂,但它是了解ExtJS强大功能的好例子。 - **特点**: 展示了如何使用ExtJS创建复杂的用户界面,如网格、树形视图等。 **...
对于前端开发者来说,掌握如何高效地操作表单元素是必不可少的一项技能,尤其是在使用像ExtJs这样的强大框架时。下面将从几个方面展开讨论:ExtJs表单的基本概念、获取表单元素值的方法、实际应用中的技巧以及一些...
EXT2.2的开发环境搭建是学习EXTJS框架的基础步骤,对于深入理解和熟练运用EXTJS至关重要。 EXT2.2的开发环境主要包括以下几个部分: 1. **Web服务器**:由于EXTJS通常需要通过HTTP协议加载,因此首先需要一个本地...
- **examples**:提供了一些使用EXTJS技术实现的小示例。 - **resources**:存放EXTJS UI资源文件,如CSS、图片等。 - **source**:存放未经压缩的EXTJS源代码。 - **Ext-all.js**:压缩后的EXTJS完整源代码。 - **...
extjs2.2核心文件,含一个helloworld的例子,说明文档见链接https://blog.csdn.net/ldy889/article/details/100008043