由于项目原因,一直用EXT作前端,版本是几年前1.x的,用的还算顺手,某日找资料一查版本都4.x了,设计的整体的感觉是变化挺大的,平时最常用的就是 form,grid,翻翻了api照着写了小范例
Ext.application({ name: 'HelloExt', launch: function() { var maxPageSize = 8; var windowForm = null; var store = Ext.create('Ext.data.Store', { storeId:'simpsonsStore', fields:['id', 'name', 'address', 'sex'], pageSize: maxPageSize, proxy: { type: 'ajax', url:'../service/jsonService/queryPageRecord', actionMethods: { read: 'post' }, reader: { type: 'json', root: 'data.rows', totalProperty: 'data.total' }, listeners: { load : function(ds, records, option) { } } }, baseParams: { query : "{}" }, listeners: { load : function(ds, records, option) { } } }); //数据加载分页算法 store.on('beforeload', function(ds, options) { console.log(options.start + "---" + options.limit) if (!options.params) { options.params = {}; options.params.start = options.start; options.params.limit = maxPageSize; } if (!ds.baseParams.query) { ds.baseParams.query = "{}"; } ds.baseParams.para = "[" + ds.baseParams.query + "," + options.params.start / options.params.limit + "," + options.params.limit + "]"; Ext.apply(ds.proxy.extraParams, { para : ds.baseParams.para }); }); store.load({ params:{ start: 0, limit: maxPageSize } }); //创建grid var grid = Ext.create('Ext.grid.Panel', { title: 'MyGrid', store: Ext.data.StoreManager.lookup('simpsonsStore'), columns: [ { header: 'id', dataIndex: 'id' }, { header: 'name', dataIndex: 'name', flex: 1 }, { header: 'address', dataIndex: 'address', width: 100 }, { header: 'sex', dataIndex: 'sex', width: 100 } ], //选择框 selModel:Ext.create('Ext.selection.CheckboxModel'), //表示可以选择行 disableSelection: false, columnLines: true, loadMask: true, height: 300, width: 500, //分页工具并格式化 bbar: Ext.create('Ext.PagingToolbar', { store: store, displayInfo: true, beforePageText: '第', afterPageText: '页,共 {0} 页', displayMsg: '显示 {0} - {1} 条,共计 {2} 条', emptyMsg: "没有数据" }), //Grid上加按钮 dockedItems: [{ xtype: 'toolbar', items: [{ text: '增加', //iconCls: 'icon-add', handler: function(){ addRec(); } }, '-', { itemId: 'delete', text: '删除', //iconCls: 'icon-delete', //disabled: true, handler: function(){ var record = grid.getSelectionModel().getSelection(); if(record.length == 0){ Ext.MessageBox.show({ title:"提示", msg:"请先选择您要操作的行!" }) return; }else{ var ids = []; for(var i = 0; i < record.length; i++){ ids.push(record[i].get("id")); } Ext.MessageBox.show({title:"所选ID列表", msg:ids}); delRec(ids); } } }, '-' ,{ text:'刷新', handler:function(){ store.load(); } }] }], renderTo: Ext.getDom('grid') }); function delRec(ids) { Ext.Ajax.request({ url: '../service/jsonService/delRecordById', params: { para : '[' + Ext.encode(ids) + ']' }, success: function(response){ var text = response.responseText; store.load(); } }); } function addRec() { windowForm = createWindow().show(); } //创建Form function createForm() { var addForm = Ext.create('Ext.form.Panel', { title: 'My Form', bodyPadding: 5, width: 400, url: '../service/jsonService/addRecord', method: 'post', layout: 'anchor', defaultType: 'textfield', items: [{ fieldLabel: 'name', name: 'name', allowBlank: false },{ fieldLabel: 'address', name: 'address', allowBlank: false },{ //xtype: 'datefield', fieldLabel: 'sex', name: 'sex', allowBlank: false }], buttons: [{ text: 'Reset', handler: function() { this.up('form').getForm().reset(); } }, { text: 'Submit', formBind: true, //only enabled once the form is valid disabled: true, handler: function() { var form = this.up('form').getForm(); if (form.isValid()) { var param = { name : form.findField('name').getValue(), address : form.findField('address').getValue(), sex : form.findField('sex').getValue() }; //表单提交 form.submit({ params: { para : '[' + Ext.encode(param) + ']' }, success: function(form, action) { console.log(action.result.success) var result = action.result; if (result.success) { Ext.Msg.alert('信息', '成功!', function() { windowForm.destroy(); store.load(); }); } }, failure: function(form, action) { Ext.Msg.alert('信息', '失败!'); } }); } } }] //渲染 //renderTo: Ext.getDom('form') }); return addForm; } //窗口创建 function createWindow() { var addForm = createForm(); var window = Ext.create('Ext.window.Window', { title: 'Hello Window', height: 200, width: 420, layout: 'fit', items: addForm }); return window; } } });
相关推荐
在EXT 3.x版本中,EXTJS已经相当成熟,被广泛应用于企业级Web应用开发。然而,深入理解EXTJS的源码对于开发者来说是一项挑战,因为JavaScript的复杂性和EXTJS自身的抽象层次。 "ext 3.x源码中文翻译"项目就是为了...
Ext.ux.grid.column.ActionButton 一个 ExtJS 5.x, 6.x Widget Column Extension,用于处理单个记录的网格行操作 根据网格行记录构建固定的和动态的下拉项 在 Ext JS 5.x 和 6.x 上测试 用法 将 ActionButton.js ...
接下来,`Ext_3.X.CHM`文件是ExtJS 3.x 的离线帮助文档,通常包含以下内容: 1. **类库参考**:详细介绍了每一个类,包括类的属性、方法、事件以及配置项,是开发过程中不可或缺的参考资料。 2. **API索引**:按照...
本例子将关注如何使用Ext JS 3.x版本创建柱状图,包括设置固定值和动态从后台获取数据来绘制图表。 首先,我们需要理解柱状图的基本概念。柱状图是一种图形,用垂直或水平的矩形条表示数据类别和相应的数量。在Ext ...
虽然现在有更新的版本(如Ext JS 7.x),但学习旧版本有助于理解框架的发展历程,同时许多核心概念在新版本中依然适用。因此,对于那些正在维护基于Ext.js 3.0项目的人来说,这些资源尤为宝贵。
Ext.grid.GridPanel 是一个功能强大且广泛使用的Grid控件,但是它存在一个很大的缺陷:单元格的内容不能选中,没法选中就没法复制,这给用户带来了很多不便。这个问题的根源在于ExtJs输出的代码中,每个单元格的div...
Ext.ux.grid.RowspanView = Ext.extend(Ext.grid.GridView, { constructor: function(conf) { Ext.ux.grid.RowspanView.superclass.constructor.call(this, conf); }, // private // 清除合并的行中,非第一行...
var vExportContent = grid.getExcelXml(); if (Ext.isIE6 || Ext.isIE7 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3) { var fd=Ext.get('frmDummy'); if (!fd) { fd=Ext.DomHelper.append(Ext.getBody...
这个文档将帮助开发者掌握EXT 2.x的新特性,如Ajax交互、AJAX Grid、TreePanel、Form表单等,进一步提升EXT应用程序的功能性和用户体验。 EXT+中文手册.chm文件是EXT的中文版使用指南,对于初学者来说非常友好。它...
grid.viewConfig = { forceFit: true, // 自动调整列宽 getRowClass: function (record, rowIndex, rowParams, store) { // 根据条件返回不同的CSS类名 if (parseFloat(record.data.mat_total) (record.data....
其次,我们需要修改 Ext.grid.GridPanel 的 prototype,以便在单元格中添加 x-selectable 类。我们可以添加一个新的 JavaScript 文件,记得在 ext-all.js 之后引入。代码如下: if (!Ext.grid.GridView.prototype....
Ext.extend(Ext.grid.Column, { renderer: function(value, meta, record, rowIndex, colIndex, store) { if (value) { return '图片" />'; } else { return ''; } } }); var grid = new Ext.grid....
A.4. 想把弹出对话框单独拿出来用的看这里 A.5. 想把日期选择框单独拿出来用的看这里 A.6. 听说有人现在还不会汉化ext A.7. 碰到使用ajax获得数据,或者提交数据出现乱码 A.8. TabPanel使用autoLoad加载的页面中的js...
D.4. 感谢[綄帥77793603]的大力支持 D.5. 感谢[葡萄5793699]的大力支持 D.6. 感谢[天外小人442540141]的大力支持 D.7. 感谢[我想我是海39893874]的大力支持 D.8. 还要感谢: 来自 family168 网站的的新版extjs教程 ...
3. 动态加载与分页:EXT的Store和Grid组件支持从服务器动态加载数据,实现分页功能,提高用户体验。 4. 响应式设计:EXT的布局和组件能够根据设备和浏览器窗口大小自动调整,确保在不同设备上都能良好显示。 5. 异步...
- 开发插件通常涉及创建一个新的JavaScript文件,定义一个类并扩展自`Ext.util.Plugin`或`Ext.grid.Panel`等特定组件的Plugin接口。 - 插件的核心方法是`init`,在这个方法中,你可以向关联的组件添加事件监听器、...
- **网格(Grid)和表格(Form)增强**:EXT 4.x对网格和表格进行了大量优化,提供了更强大的数据展示和编辑功能。 - **高级图表(Charts)**:EXT 4.x引入了新的图表库,支持多种复杂的数据可视化效果。 3. **...
12. **grid.store.sort(field, direction)**: 对数据存储进行排序,field是排序的字段名,direction是排序方向('ASC'或'DESC')。 13. **form.getForm().submit()**: 提交表单数据,通常用于向服务器发送数据。 ...