megaminx之旅六:班级(Classes)CURD

班级(Classes)的CURD

修改megaminx-extjs/pom.xml文件,如下:

	<dependencies>
		......
		<dependency>
			<groupId>org.megaminx</groupId>
			<artifactId>megaminx-example</artifactId>
			<version>${project.version}</version>
		</dependency>
		......
	</dependencies>	

修改megaminx-extjs/src/main/resources/struts.xml文件,如下:

<struts>
	......	
	<include file="res/struts-example.xml"></include>	
	<include file="res/struts-system.xml"></include>
</struts>

modules/example/js/Classes.js文件, 全部代码如下:

Megaminx.modules.example.Classes ={
	formTitle:'Classes Info'
	,gridTitle: 'Classes List'
	,deleteMsg: 'Are you sure to delete this classes [{0}]'
}

Ext.apply(Megaminx.modules.example.Classes, {
	_id:function(){
		return {
			id:Ext.id()
			,fxtype:'numberfield'
			,type:Ext.data.Types.NUMBER
			,name:'ID'
			,title:this.idTitle || 'ID'
			,mapping:'ID'
			,sortable:true
			,width: 30
			,alias:'_classes'
		};
	}
	
	,_version:function(){
		return {
			id:Ext.id()
			,fxtype:'numberfield'
			,type:Ext.data.Types.INTEGER
			,name:'version'
			,title:this.versionTitle || 'Version'
			,mapping:'version'
			,sortable:false
			,width: 30
			,alias:'_classes'
		};
	}
	
	,_name:function(){
		return {
			id:Ext.id()
			,fxtype:'textfield'
			,type:Ext.data.Types.STRING
			,name:'name'
			,title:this.nameTitle ||'Name'
			,mapping:'name'
			,sortable:true
			,width: 80
			,maxLength:50
			,alias:'_classes'
		};
	}
	
	,_description:function(){
		return {
			id:Ext.id()
			,fxtype:'textarea'
			,type:Ext.data.Types.STRING
			,name:'description'
			,title:this.descriptionTitle ||'Description'
			,mapping:'description'
			,sortable:true
			,width: 80
			,maxLength:255
			,alias:'_classes'
		};
	}
	
	,_advistor:function(){
		return {
			id:Ext.id()
			,fxtype:'textfield'
			,type:Ext.data.Types.STRING
			,name:'advistor'
			,title:this.advistorTitle ||'Advistor'
			,mapping:'advistor'
			,sortable:true
			,width: 80
			,maxLength:50
			,alias:'_classes'
		};
	}	
});

Megaminx.modules.example.ClassesStore = function(config){
	config = config ||{};

	var classes = Megaminx.modules.example.Classes;	
	var _id = classes._id();
	var _version = classes._version();
	var _name = classes._name();
	var _advistor = classes._advistor();
	var _description = classes._description();
	
		
    Ext.apply(config, {
        namespace: 'example/classes'
        ,reader:new Ext.data.JsonReader(
			{
				root:'data'
				,idProperty:_id.name
				,totalProperty:'total'
			}
			,Ext.data.Record.create([
				{name: _id.name, mapping:_id.mapping, type: _id.type}
				,{name: _version.name, mapping:_version.mapping, type: _version.type}
				,{name: _name.name, mapping:_name.mapping, type: _name.type}
				,{name: _advistor.name, mapping:_advistor.mapping, type: _advistor.type}
				,{name: _description.name, mapping:_description.mapping, type: _description.type}
			])
		)
    }); 
      	
	Megaminx.modules.example.ClassesStore.superclass.constructor.call(this, config);
	
};
Ext.extend(Megaminx.modules.example.ClassesStore, Megaminx.data.Store, {
	/**
	 * @param {Object} the object of Classes
	 */
	_save:function(data){
		this.setBaseParam(Megaminx.actionName, 'save.action');
		var options = {waitMsg:Megaminx.waitMsg.saving,userOpt:Megaminx.operate.save}

		Megaminx.modules.example.ClassesStore.superclass._load.call(this, data,options);		
	}

	/**
	 * @param {Object} the object of Classes
	 */
	,_delete:function(data){
		this.setBaseParam(Megaminx.actionName, 'delete.action');
		var options = {waitMsg:Megaminx.waitMsg.deleting,userOpt:Megaminx.operate.del}

		Megaminx.modules.example.ClassesStore.superclass._load.call(this, data,options);		
	}
	
	,_filter:function(options){
		this.setBaseParam(Megaminx.actionName, 'filter.action');
		options = options || {};
		options.waitMsg = Megaminx.waitMsg.loading;
		options.userOpt = Megaminx.operate.load;

		Megaminx.modules.example.ClassesStore.superclass._filter.call(this, options);		
	}
	
	,_create:function(){
		return new this.recordType({
			ID:null
			,version:null
			,name:null
			,advistor:null			
			,description:null
		});
	}			
});
Ext.reg('example.classesstore', Megaminx.modules.example.ClassesStore);

Megaminx.modules.example.ClassesGrid = function(config){
    Megaminx.modules.example.ClassesGrid.superclass.constructor.call(this, config);   
};
Ext.extend(Megaminx.modules.example.ClassesGrid, Megaminx.grid.Grid, {
	title: Megaminx.modules.example.Classes.gridTitle

	,initComponent:function() {
		var classes = Megaminx.modules.example.Classes;	
		var _id = classes._id();
		var _version = classes._version();
		var _name = classes._name();
		var _advistor = classes._advistor();
		var _description = classes._description();
			
		var meta = this._meta;
		this._initColumns = [{
        	id:_id.id
        	,header: _id.title
        	, width: _id.width
        	, sortable: _id.sortable
        	, dataIndex: _id.name
        },{
        	id:_version.id
        	,header: _version.title
        	, width: _version.width
        	, sortable: _version.sortable
        	, dataIndex: _version.name
        	, hidden:true
        },{
        	id:_name.id
        	,header: _name.title
        	, width: _name.width
        	, sortable: _name.sortable
        	, dataIndex: _name.name
        },{
        	id:_advistor.id
        	,header: _advistor.title
        	, width: _advistor.width
        	, sortable: _advistor.sortable
        	, dataIndex: _advistor.name
        },{
        	id:_description.id
        	,header: _description.title
        	, width: _description.width
        	, sortable: _description.sortable
        	, dataIndex: _description.name
        }];


		Megaminx.modules.example.ClassesGrid.superclass.initComponent.apply(this, arguments);
		
		this._id = this.findById(_id.id);							
		this._version = this.findById(_version.id);
		this._name = this.findById(_name.id);
		this._advistor = this.findById(_advistor.id);
		this._description = this.findById(_description.id);
	}	
	
});
Ext.reg('example.classesgrid', Megaminx.modules.example.ClassesGrid);

Megaminx.modules.example.ClassesForm = function(config){
    Megaminx.modules.example.ClassesForm.superclass.constructor.call(this, config);
};
Ext.extend(Megaminx.modules.example.ClassesForm, Megaminx.form.Form, {
	title: Megaminx.modules.example.Classes.formTitle
	,height:130
	
	,initComponent:function() {
		var classes = Megaminx.modules.example.Classes;	
		var _id = classes._id();
		var _version = classes._version();
		var _name = classes._name();
		var _advistor = classes._advistor();
		var _description = classes._description();	
		
		var config ={	
			items:[{
				id:_version.id
				,xtype:'hidden'
				,name:_version.name
			},{
				layout:'column'
				,items:[{
					columnWidth:.5
                	,layout: 'form'
                	,items:[{
                		id:_id.id
                		,xtype: _id.fxtype
                		,name:_id.name	
                		,fieldLabel:_id.title
                		,anchor:'95%'	
                	}]
				},{
					columnWidth:.5
                	,layout: 'form'
                	,items:[{
                		id:_name.id
                		,xtype: _name.fxtype
						,name:_name.name
						,maxLength: _name.maxLength	
						,fieldLabel:_name.title
						,allowBlank: false	
						,anchor:'95%'				
                	}]
				}]
			},{
				id:_advistor.id
				,xtype: _advistor.fxtype
				,name:_advistor.name
				,maxLength: _advistor.maxLength	
				,fieldLabel:_advistor.title
				,allowBlank: false	
				,anchor:'97.5%'
			},{
				id:_description.id
				,xtype: _description.fxtype
				,name:_description.name
				,maxLength: _description.maxLength
				,fieldLabel:_description.title
				,anchor:'97.5%'
			}]
		};
		
		Ext.apply(this, Ext.apply(this.initialConfig, config)); 
		Megaminx.modules.example.ClassesForm.superclass.initComponent.apply(this, arguments);
		
		this._id = this.findById(_id.id);							
		this._version = this.findById(_version.id);
		this._name = this.findById(_name.id);
		this._advistor = this.findById(_advistor.id);		
		this._description = this.findById(_description.id);						
	}
	
	,setReadOnly:function(bool){
		Megaminx.modules.example.ClassesForm.superclass.setReadOnly.call(this,bool);
		this._id.setReadOnly(true);
	}	
	
	,_delete:function(){
		if (! this.store) return;
		if (Ext.isEmpty(this._id.getValue)) return;
		
		Ext.MessageBox.confirm('Confirm'
			,String.format(Megaminx.modules.example.Classes.deleteMsg, this._name.getValue())
			,function(btn){
				if (btn == 'yes'){
					this.store._delete(this.getValues());
				}
			}
			,this
		)
	}
	
	,_save:function(){
		if (! this.store) return;
		if (this.isValid()){
			this.store._save(this.getValues());
		}
	}
	
	,_create:function(){
		this.loadData(this.store._create());
	}			
});
Ext.reg('example.classesform', Megaminx.modules.example.ClassesForm);

Megaminx.modules.example.ClassesGridRowNumber = function(config){
    Megaminx.modules.example.ClassesGridRowNumber.superclass.constructor.call(this, config);   
};
Ext.extend(Megaminx.modules.example.ClassesGridRowNumber, Megaminx.modules.example.ClassesGrid, {	

	initComponent:function() {

		Ext.apply(this, Ext.apply(this.initialConfig, {columns: [new Ext.grid.RowNumberer()]})); 
		Megaminx.modules.example.ClassesGridRowNumber.superclass.initComponent.apply(this, arguments);
	}	
	

});
Ext.reg('example.classesgridrownumber', Megaminx.modules.example.ClassesGridRowNumber);

Megaminx.modules.example.ClassesGridFilters = function(config){
	config = config || {};
    	
	var classes = Megaminx.modules.example.Classes;	
	var _id = classes._id();
	var _version = classes._version();
	var _name = classes._name();
	var _advistor = classes._advistor();	
	var _description = classes._description();
	
		
    Ext.apply(config, {
       	filters: [{
       		type: _id.type
       		,dataIndex: _id.name
       		,component: _id.component
       		,alias:_id.alias
       	}, {
       		type: _name.type
       		,dataIndex: _name.name
       		,component: _name.component
       		,alias:_name.alias
       	},{
       		type: _advistor.type
       		,dataIndex: _advistor.name
       		,component: _advistor.component
       		,alias:_advistor.alias
       	}, {
       		type: _description.type
       		,dataIndex: _description.name
       		,component: _description.component
       		,alias:_description.alias
       	}]
    });	 
    	   	
    Megaminx.modules.example.ClassesGridFilters.superclass.constructor.call(this, config);    
};
Ext.extend(Megaminx.modules.example.ClassesGridFilters, Megaminx.grid.GridFilters, {
	minFilters: 1  	
});
Ext.preg('example.classesgridfilters', Megaminx.modules.example.ClassesGridFilters);

在modules/example/js下创建Classes.Main.CURD.js文件,如下:

Megaminx.modules.example.ClassesMainCURD = Ext.extend(Megaminx.app.Panel, {
	DBID:100
	,layout:'border'
   	
	,initComponent:function(){	
   		classes_grid_id=Ext.id();
   		classes_form_id=Ext.id();
   		classes_gridfilters_id=Ext.id();
			
		var config = {
			tbar:{
				defaults:{
		 			iconAlign: "left"
		            ,scale:"medium"
				}
		 		,buttonAlign:"left"		
				,items:[{
					iconCls: "btn-find-icon-24"
           		 	, scope: this
           		 	, handler: this.OnFindClick  												
					, ref: "../findBtn"					
		            , text: "Find"
		            , tooltip: "Find privileges"
		        }
		        , "-"
		        ,{
		        	iconCls: "btn-add-icon-24"
           		 	, scope: this
           		 	, handler: this.OnAddClick  			        				        	
		        	, ref: "../addBtn"
		        	, text: "Add"
		        	, tooltip: "Add a new privilege"
		        }
		        , "-"
		        ,{
		        	iconCls: "btn-edit-icon-24"
           		 	, scope: this
           		 	, handler: this.OnEditClick  			        	
		        	, ref: "../editBtn"			        	
		        	, text: "Edit"
		        	, tooltip: "Edit a privilege"
		        }
		        , "-"
		        , {
		        	iconCls: "btn-del-icon-24"
           		 	, scope: this
           		 	, handler: this.OnDeleteClick  			        	
		        	, ref: "../deleteBtn"			        	
		        	, text: "Delete"
		        	, tooltip: "Delete selected privilege"
		        }
		        , "-"
		        , {
		        	iconCls: "btn-save-icon-24"
           		 	, scope: this
           		 	, handler: this.OnSaveClick 			        	
		        	, ref: "../saveBtn" 			        	
		        	, text: "Save"
		        	, tooltip: "Save new privilege"
		        }
		        , "-"
		        ,{
		        	iconCls: "btn-cancel-icon-24"
           		 	, scope: this
           		 	, handler: this.OnCancelClick 			        	
		        	, ref: "../cancelBtn" 			        	
		        	, text: "Cancel"
		        	, tooltip: "Cancel operation"
		        }
		        ,"-"
		        , {
		        	iconCls: "btn-exit-icon-24"
           		 	, scope: this
           		 	, handler: this.OnExitClick 			        	
		        	, ref: "../exitBtn" 			        	
		        	, text: "Exit"
		        	, tooltip: "Exit window"
		        }]
			}			
			,items:[{
				id:classes_form_id
				,region:'north'
				,xtype:'example.classesform'
				,store:{
					xtype:'example.classesstore'
				}				
			},{
				id:classes_grid_id
				,region:'center'
				,xtype:'example.classesgridrownumber'
				,store:{
					xtype:'example.classesstore'
				}
				,bbar:{
	        		xtype:'megaminx.paging'
	        	}		
				,plugins:[{
					id:classes_gridfilters_id
					,ptype:'example.classesgridfilters'
				}]
				,sm: new Ext.grid.RowSelectionModel({singleSelect: true})
			}
			]
		};
		
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Megaminx.modules.example.ClassesMainCURD.superclass.initComponent.apply(this, arguments);
		
   		this._classesGrid = this.getCmpById(classes_grid_id);
   		this._classesForm = this.getCmpById(classes_form_id);
   		this._classesGridFilters = this.getCmpById(classes_gridfilters_id);				
	}
	
   	,OnEditClick:function(){
		alert('edit');
   	} 	   	
   	
   	,OnFindClick:function(){
   		alert('find');		
   	}   
   	
	,OnExitClick:function(){
		if(this.ownerCt)
			this.ownerCt.destroy();
	}
	
	,OnDeleteClick:function(){
   		alert('delete');
	}
	
	,OnSaveClick:function(){
		alert('save');
	}	

	,OnAddClick:function(){
		alert('save')
	}

	,OnCancelClick:function(){
		alert('cancel');
	}
});
Ext.reg('example.classesmaincurd', Megaminx.modules.example.ClassesMainCURD);

修改数据库中Classes的定义:

insert into msystem.form (id, version, create_date, modify_date, name, description, data, folder) values (100, 0, null, null, 'manager classes', 'add/modfiy/read/delete classes', '{
	config:{
		xtype:"example.classesmaincurd"
    		,title:"Classes"
	}
    	
	,javascript:[
		{
       		directory:"modules/example/js/"
        	,files:[
				"Classes.js"
				,"Classes.Main.CURD.js"
			]
    		}
	]
}', 'example');

运行应用,可以看到如下页面:


生成测试数据如下:

INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10000','0','Curabitur','sem semper erat, in consectetuer ipsum nunc id enim. Curabitur','Donec');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10001','0','netus','cubilia Curae; Donec tincidunt. Donec vitae erat vel pede blandit','egestas');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10002','0','arcu','nec tempus scelerisque, lorem ipsum sodales purus, in molestie tortor','enim.');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10003','0','molestie','Aliquam erat volutpat. Nulla dignissim. Maecenas ornare egestas ligula. Nullam','ornare');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10004','0','mauris','auctor odio a purus. Duis elementum, dui quis accumsan convallis,','Phasellus');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10005','0','nascetur','sit amet, consectetuer adipiscing elit. Curabitur sed tortor. Integer aliquam','nisi');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10006','0','sem','consectetuer adipiscing elit. Curabitur sed tortor. Integer aliquam adipiscing lacus.','sit');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10007','0','Duis','lorem semper auctor. Mauris vel turpis. Aliquam adipiscing lobortis risus.','augue');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10008','0','cursus','ultricies ligula. Nullam enim. Sed nulla ante, iaculis nec, eleifend','at,');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10009','0','tincidunt','egestas ligula. Nullam feugiat placerat velit. Quisque varius. Nam porttitor','convallis');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10010','0','Nullam','sem ut cursus luctus, ipsum leo elementum sem, vitae aliquam','iaculis');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10011','0','Quisque','velit eget laoreet posuere, enim nisl elementum purus, accumsan interdum','ut');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10012','0','odio','nec tempus mauris erat eget ipsum. Suspendisse sagittis. Nullam vitae','a');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10013','0','Nullam','ligula. Donec luctus aliquet odio. Etiam ligula tortor, dictum eu,','Donec');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10014','0','eget,','tempor lorem, eget mollis lectus pede et risus. Quisque libero','gravida');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10015','0','Aenean','sollicitudin a, malesuada id, erat. Etiam vestibulum massa rutrum magna.','ut');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10016','0','malesuada','erat vel pede blandit congue. In scelerisque scelerisque dui. Suspendisse','leo');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10017','0','Donec','feugiat. Sed nec metus facilisis lorem tristique aliquet. Phasellus fermentum','vitae');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10018','0','at','aliquet molestie tellus. Aenean egestas hendrerit neque. In ornare sagittis','lorem,');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10019','0','molestie','mi, ac mattis velit justo nec ante. Maecenas mi felis,','eget,');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10020','0','nisl.','netus et malesuada fames ac turpis egestas. Aliquam fringilla cursus','sapien.');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10021','0','libero.','tellus. Aenean egestas hendrerit neque. In ornare sagittis felis. Donec','a,');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10022','0','ligula.','cursus. Integer mollis. Integer tincidunt aliquam arcu. Aliquam ultrices iaculis','velit.');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10023','0','sit','luctus sit amet, faucibus ut, nulla. Cras eu tellus eu','fermentum');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10024','0','Phasellus','Integer eu lacus. Quisque imperdiet, erat nonummy ultricies ornare, elit','ornare');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10025','0','Nam','tempor lorem, eget mollis lectus pede et risus. Quisque libero','at');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10026','0','dapibus','magna. Suspendisse tristique neque venenatis lacus. Etiam bibendum fermentum metus.','mi');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10027','0','interdum','Ut semper pretium neque. Morbi quis urna. Nunc quis arcu','a');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10028','0','tempor','lorem ut aliquam iaculis, lacus pede sagittis augue, eu tempor','ipsum');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10029','0','et','a feugiat tellus lorem eu metus. In lorem. Donec elementum,','tellus');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10030','0','accumsan','nonummy ac, feugiat non, lobortis quis, pede. Suspendisse dui. Fusce','blandit');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10031','0','lacus.','sem. Pellentesque ut ipsum ac mi eleifend egestas. Sed pharetra,','viverra.');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10032','0','vel,','ipsum leo elementum sem, vitae aliquam eros turpis non enim.','sit');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10033','0','quam,','Nulla tempor augue ac ipsum. Phasellus vitae mauris sit amet','rhoncus.');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10034','0','tristique','Phasellus elit pede, malesuada vel, venenatis vel, faucibus id, libero.','In');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10035','0','rhoncus.','turpis egestas. Fusce aliquet magna a neque. Nullam ut nisi','vel');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10036','0','Curabitur','arcu. Curabitur ut odio vel est tempor bibendum. Donec felis','ut');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10037','0','vehicula.','lacinia orci, consectetuer euismod est arcu ac orci. Ut semper','interdum.');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10038','0','Aenean','est, mollis non, cursus non, egestas a, dui. Cras pellentesque.','Phasellus');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10039','0','mi,','fames ac turpis egestas. Aliquam fringilla cursus purus. Nullam scelerisque','parturient');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10040','0','sed','rutrum, justo. Praesent luctus. Curabitur egestas nunc sed libero. Proin','Nulla');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10041','0','In','porttitor interdum. Sed auctor odio a purus. Duis elementum, dui','purus.');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10042','0','Nam','ante ipsum primis in faucibus orci luctus et ultrices posuere','vestibulum');
INSERT INTO `classes` (`id`,`version`,`name`,`description`,`advistor`) VALUES ('10043','0','fringilla','Curae; Donec tincidunt. Donec vitae erat vel pede blandit congue.','nascetur');

完成CURD功能:

初始化界面,包括按钮,控件的事件等等,如下:

Megaminx.modules.example.ClassesMainCURD = Ext.extend(Megaminx.app.Panel, {
	......
	,initEvents: function() {
		Megaminx.modules.example.ClassesMainCURD.superclass.initEvents.call(this);

		this._classesGrid.store.on('load', this.OnStoreLoaded, this);
		this._classesGrid.store.on('beforeload', this.OnStoreBeforeLoad, this);		
		this._classesGrid.store.on('exception', this.OnStoreHandleException, this);
		
		this._classesForm.store.on('load', this.OnStoreLoaded, this);
		this._classesForm.store.on('beforeload', this.OnStoreBeforeLoad, this);		
		this._classesForm.store.on('exception', this.OnStoreHandleException, this);
		
		this.on('afterrender', this.OnInitForm, this);		
	}
	
   	,OnInitForm:function(){  		
   		this.setButtons(false);	
   	}
   	
   	,setButtons:function(bool, id){     		
   		this.findBtn.setDisabled(bool);		
   		this.addBtn.setDisabled(bool);
   		this.editBtn.setDisabled(bool || Ext.isEmpty(id));
   		this.deleteBtn.setDisabled(bool || Ext.isEmpty(id));
   		this.saveBtn.setDisabled(!bool);
   		this.cancelBtn.setDisabled(!bool);
		
		this._classesForm.setReadOnly(!bool);	
   	}

   	,OnStoreLoaded:function(store, records, options){
   		if (options.userOpt === Megaminx.operate.del){   			
   			this._classesGrid._delete(this._classesForm._id.getValue());
   			this.setButtons(false);
		}
		else
   		if (options.userOpt === Megaminx.operate.save){   			
   			this._classesGrid._update(records);
   			this.setButtons(false);	
		}			   		
   		
   		Megaminx.modules.example.ClassesMainCURD.superclass.OnStoreLoaded.apply(this, arguments);  			
   	}
	......
});

查询功能实现:

Megaminx.modules.example.ClassesMainCURD = Ext.extend(Megaminx.app.Panel, {
	......
   	,OnFindClick:function(){
   		if (! this._classesGridFilters.canFind()){
   			return;
   		}

		var o = {start: 0,limit: Megaminx.limit, total:0};			
		this._classesGrid.store._filter({params: o});		
   	}
	......
});

点击grid,显示数据到form上:

Megaminx.modules.example.ClassesMainCURD = Ext.extend(Megaminx.app.Panel, {
	......
	,initEvents: function() {
		Megaminx.modules.system.ClassesMainCURD.superclass.initEvents.call(this);
		
		......		
		this._classesGrid.getSelectionModel().on('rowselect',this.OnRowselect, this);
		......
	}

   	,OnRowselect:function(sm, rowIdx, r){
   		if (this.saveBtn.disabled === false) return;
			
		this._classesForm.loadData(r);
		this.setButtons(false, r.id);
   	} 
	......
});

add功能:
Megaminx.modules.example.ClassesMainCURD = Ext.extend(Megaminx.app.Panel, {
	......
	,OnAddClick:function(){
		this._classesForm._create();	
		this.setButtons(true);
	}
	......
});

edit功能:

Megaminx.modules.example.ClassesMainCURD = Ext.extend(Megaminx.app.Panel, {
	......
   	,OnEditClick:function(){
		this.setButtons(true);
   	} 
	......
});

delete功能实现:

Megaminx.modules.example.ClassesMainCURD = Ext.extend(Megaminx.app.Panel, {
	......
	,OnDeleteClick:function(){
   		this._classesForm._delete();
	}
	......
});

save功能实现:

Megaminx.modules.example.ClassesMainCURD = Ext.extend(Megaminx.app.Panel, {
	......
	,OnSaveClick:function(){
		this._classesForm._save();
	}
	......
});


Megaminx项目源码地址:http://code.google.com/p/jmegaminx/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值