`
bjxyj
  • 浏览: 587 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

请您先登录,才能继续操作

ext4.x之Grid

    博客分类:
  • ext4
 
阅读更多
由于项目原因,一直用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源码中文翻译

    在EXT 3.x版本中,EXTJS已经相当成熟,被广泛应用于企业级Web应用开发。然而,深入理解EXTJS的源码对于开发者来说是一项挑战,因为JavaScript的复杂性和EXTJS自身的抽象层次。 "ext 3.x源码中文翻译"项目就是为了...

    Ext.ux.grid.column.ActionButton:一个 Ext JS 5.x, 6.x Widget Column Extension 来处理网格行操作

    Ext.ux.grid.column.ActionButton 一个 ExtJS 5.x, 6.x Widget Column Extension,用于处理单个记录的网格行操作 根据网格行记录构建固定的和动态的下拉项 在 Ext JS 5.x 和 6.x 上测试 用法 将 ActionButton.js ...

    extjs3.x 官方示例以及chm版api

    接下来,`Ext_3.X.CHM`文件是ExtJS 3.x 的离线帮助文档,通常包含以下内容: 1. **类库参考**:详细介绍了每一个类,包括类的属性、方法、事件以及配置项,是开发过程中不可或缺的参考资料。 2. **API索引**:按照...

    ext3.*画图的例子

    本例子将关注如何使用Ext JS 3.x版本创建柱状图,包括设置固定值和动态从后台获取数据来绘制图表。 首先,我们需要理解柱状图的基本概念。柱状图是一种图形,用垂直或水平的矩形条表示数据类别和相应的数量。在Ext ...

    Ext.js教程和Ext.js API

    虽然现在有更新的版本(如Ext JS 7.x),但学习旧版本有助于理解框架的发展历程,同时许多核心概念在新版本中依然适用。因此,对于那些正在维护基于Ext.js 3.0项目的人来说,这些资源尤为宝贵。

    GridPanel中的单元格不能选中复制的解决方法

    Ext.grid.GridPanel 是一个功能强大且广泛使用的Grid控件,但是它存在一个很大的缺陷:单元格的内容不能选中,没法选中就没法复制,这给用户带来了很多不便。这个问题的根源在于ExtJs输出的代码中,每个单元格的div...

    extjs单元格合并

    Ext.ux.grid.RowspanView = Ext.extend(Ext.grid.GridView, { constructor: function(conf) { Ext.ux.grid.RowspanView.superclass.constructor.call(this, conf); }, // private // 清除合并的行中,非第一行...

    Ext grid To Excel

    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 chm中文版

    这个文档将帮助开发者掌握EXT 2.x的新特性,如Ajax交互、AJAX Grid、TreePanel、Form表单等,进一步提升EXT应用程序的功能性和用户体验。 EXT+中文手册.chm文件是EXT的中文版使用指南,对于初学者来说非常友好。它...

    ext grid 根据条件指定行颜色

    grid.viewConfig = { forceFit: true, // 自动调整列宽 getRowClass: function (record, rowIndex, rowParams, store) { // 根据条件返回不同的CSS类名 if (parseFloat(record.data.mat_total) (record.data....

    extjs单元格无法复制

    其次,我们需要修改 Ext.grid.GridPanel 的 prototype,以便在单元格中添加 x-selectable 类。我们可以添加一个新的 JavaScript 文件,记得在 ext-all.js 之后引入。代码如下: if (!Ext.grid.GridView.prototype....

    ext超酷的grid中放图片(ext3.2.1)

    Ext.extend(Ext.grid.Column, { renderer: function(value, meta, record, rowIndex, colIndex, store) { if (value) { return '图片" /&gt;'; } else { return ''; } } }); var grid = new Ext.grid....

    Ext 开发指南 学习资料

    A.4. 想把弹出对话框单独拿出来用的看这里 A.5. 想把日期选择框单独拿出来用的看这里 A.6. 听说有人现在还不会汉化ext A.7. 碰到使用ajax获得数据,或者提交数据出现乱码 A.8. TabPanel使用autoLoad加载的页面中的js...

    EXT2.0中文教程

    D.4. 感谢[綄帥77793603]的大力支持 D.5. 感谢[葡萄5793699]的大力支持 D.6. 感谢[天外小人442540141]的大力支持 D.7. 感谢[我想我是海39893874]的大力支持 D.8. 还要感谢: 来自 family168 网站的的新版extjs教程 ...

    ext后台管理

    3. 动态加载与分页:EXT的Store和Grid组件支持从服务器动态加载数据,实现分页功能,提高用户体验。 4. 响应式设计:EXT的布局和组件能够根据设备和浏览器窗口大小自动调整,确保在不同设备上都能良好显示。 5. 异步...

    ExtJS开发插件及Ext包

    - 开发插件通常涉及创建一个新的JavaScript文件,定义一个类并扩展自`Ext.util.Plugin`或`Ext.grid.Panel`等特定组件的Plugin接口。 - 插件的核心方法是`init`,在这个方法中,你可以向关联的组件添加事件监听器、...

    ext-cn-js-beta

    - **网格(Grid)和表格(Form)增强**:EXT 4.x对网格和表格进行了大量优化,提供了更强大的数据展示和编辑功能。 - **高级图表(Charts)**:EXT 4.x引入了新的图表库,支持多种复杂的数据可视化效果。 3. **...

    EXT dojochina Ext类实例方法.rar

    12. **grid.store.sort(field, direction)**: 对数据存储进行排序,field是排序的字段名,direction是排序方向('ASC'或'DESC')。 13. **form.getForm().submit()**: 提交表单数据,通常用于向服务器发送数据。 ...

Global site tag (gtag.js) - Google Analytics