我写的基于ExtJs的CURD页面

Extjs5手动搭建MVVM项目demo Extjs5手动搭建MVVM项目demo,具体请看我博客 立即下载

1,查询列表页

/**
 * 接口用户管理列表页面
 * 
 * @class UserInfoView
 * @extend Ext.Panel
 */

UserInfoView = Ext.extend(Ext.Panel, {
	// 条件搜索Panel
	searchPanel : null,

	// 数据展示Panel
	gridPanel : null,

	// GridPanel的数据Store
	store : null,

	// 头部工具栏
	topbar : null,

	// 构造函数
	constructor : function(_cfg) {
		Ext.applyIf(this, _cfg);
		this.initDataSource();
		this.initUIComponents();
		// 调用父类构造
		UserInfoView.superclass.constructor.call(this, {
			id : 'UserInfoView',
			title : '接口用户管理',
			region : 'center',
			layout : 'border',
			items : [ this.searchPanel, this.gridPanel ]
		});
	},

	// 初始化组件
	initUIComponents : function() {
		this.initSearchPanel();
		this.initToolbarUI();
		this.initGridUI();
	}
});

/**
 * 初始化条件搜索Panel
 */
UserInfoView.prototype.initSearchPanel = function() {
	this.searchPanel = new Ext.FormPanel({
		layout : 'hbox',
		height : 35,
		region : 'north',
		bodyStyle : 'padding:6px 10px 6px 10px',
		border : false,
		defaults : {
			xtype : 'label',
			border : false,
			margins : {
				top : 0,
				left : 0,
				bottom : 0,
				right : 30
			}
		},
		items : [ {
			text : '用户名',
			margins : {
				top : 3,
				left : 0,
				bottom : 0,
				right : 10
			}
		}, {
			name : 'Q_userName_S_LK',
			xtype : 'textfield'
		}, {
			text : '行政区划代码',
			margins : {
				top : 3,
				left : 0,
				bottom : 0,
				right : 10
			}
		}, {
			name : 'Q_xzqh_S_LK',
			xtype : 'textfield'
		}, {
			text : '状态',
			margins : {
				top : 3,
				left : 0,
				bottom : 0,
				right : 10
			}
		}, {
			hiddenName : 'Q_userStatus_N_EQ',
			xtype : 'combo',
			store : new Ext.data.SimpleStore({
				fields : [ 'value', 'text' ],
				data : [ [ '', '-请选择-' ], [ '0', '已启用' ], [ '1', '已禁用' ] ]
			}),
			displayField : 'text',
			valueField : 'value',
			triggerAction : 'all',
			mode : 'local',
			width : 100,
			editable : false,
			value : ''
		}, {
			xtype : 'button',
			text : '查询',
			iconCls : 'search',
			handler : this.search.createCallback(this)
		} ]
	});
};

/**
 * 初始化工具栏UI
 */
UserInfoView.prototype.initToolbarUI = function() {
	this.topbar = new Ext.Toolbar({
		height : 30,
		bodyStyle : 'text-align:left',
		items : [ {
			iconCls : 'btn-add',
			text : '新增用户',
			xtype : 'button',
			handler : this.createRecord
		}, {
			iconCls : 'btn-del',
			text : '删除用户',
			xtype : 'button',
			handler : this.delRecords,
			scope : this
		} ]
	});
};

/**
 * 初始化Grid列表UI
 */
UserInfoView.prototype.initGridUI = function() {
	// 操作列
	this.rowActions = new Ext.ux.grid.RowActions({
		header : '操作',
		width : 80,
		actions : [ {
			iconCls : 'btn-del',
			qtip : '删除',
			style : 'margin:0 3px 0 3px'
		}, {
			iconCls : 'btn-edit',
			qtip : '编辑',
			style : 'margin:0 3px 0 3px'
		} ]
	});
	this.rowActions.on('action', this.onRowAction, this);
	// 选择列
	var sm = new Ext.grid.CheckboxSelectionModel();
	// 普通的展现列
	var cm = new Ext.grid.ColumnModel({
		columns : [ sm, new Ext.grid.RowNumberer(), {
			header : 'useid',
			dataIndex : 'useid',
			hidden : true
		}, {
			header : '用户名',
			dataIndex : 'userName'
		}, {
			header : '接入编号',
			dataIndex : 'wsCode'
		}, {
			header : '状态',
			dataIndex : 'userStatus'
		}, this.rowActions ],
		defaults : {
			sortable : true,
			menuDisabled : false,
			width : 100
		}
	});
	//Grid面板
	this.gridPanel = new Ext.grid.GridPanel({
		id : 'UserInfoGrid',
		region : 'center',
		stripeRows : true,
		tbar : this.topbar,
		store : this.store,
		trackMouseOver : true,
		disableSelection : false,
		loadMask : true,
		autoHeight : true,
		cm : cm,
		sm : sm,
		plugins : this.rowActions,
		viewConfig : {
			forceFit : true,
			autoFill : true
		},
		bbar : new Ext.PagingToolbar({
			pageSize : 25,
			store : this.store,
			displayInfo : true,
			displayMsg : '当前页记录索引{0}-{1}, 共{2}条记录',
			emptyMsg : "当前没有记录"
		})
	});
	// 监听行双击事件,row double click
	this.gridPanel.addListener('rowdblclick', function(grid, rowindex, e) {
		grid.getSelectionModel().each(function(rec) {
			new UserInfoForm({
				useid : rec.data.useid,
				displayType : true
			}).show();
		});
	});
	
};

/**
 * 初始化数据源
 */
UserInfoView.prototype.initDataSource = function() {
	// 配置数据源
	this.store = new Ext.data.JsonStore({
		url : __ctxPath + "/ws/listUserInfo.do",
		root : 'result',
		totalProperty : 'totalCounts',
		remoteSort : true,
		fields : [ {
			name : 'useid',
			type : 'int'
		}, 'userName', 'wsCode', 'userKey', 'xzqh', 'userStatus', 'timeA',
				'timeM', 'activeTime' ],
		listeners : {
			load : function(store, records, option) {
				store.each(function(record) {
					switch (record.get('userStatus')) {
					case 0:
						record.set('userStatus', '已启用');
						break;
					case 1:
						record.set('userStatus', '已禁用');
						break;
					}
					;
				});
			}
		}
	});
	this.store.setDefaultSort('useid', 'desc');
	// 加载数据
	this.store.load({
		params : {
			start : 0,
			limit : 25
		}
	});
};

/**
 * 新增用户
 */
UserInfoView.prototype.createRecord = function() {
	new UserInfoForm().show();
};

/**
 * 操作列处理函数
 * @param gridPanel
 * @param record
 * @param action
 * @param row
 * @param col
 */
UserInfoView.prototype.onRowAction = function(gridPanel, record, action, row, col) {
	switch (action) {
	case 'btn-del': //删除
		this.delByIds(record.data.useid);
		break;
	case 'btn-edit': //编辑
		this.editRecord(record);
		break;
	default:
		break;
	}
};

/**
 * 编辑
 * @param record
 */
UserInfoView.prototype.editRecord = function(record){
	new UserInfoForm({
		useid : record.data.useid
	}).show();
};

/**
 * 批量删除
 * @param record
 */
UserInfoView.prototype.delByIds = function(ids) {
	Ext.Msg.confirm('信息确认', '您确认要删除所选记录吗?', function(btn) {
		if (btn == 'yes') {
			Ext.Ajax.request({
				url : __ctxPath + '/ws/multiDelUserInfo.do',
				params : {
					ids : ids
				},
				method : 'POST',
				success : function(response, options) {
					Ext.ux.Toast.msg('操作信息', '成功删除接口用户');
					Ext.getCmp('UserInfoGrid').getStore().reload();
				},
				failure : function(response, options) {
					Ext.ux.Toast.msg('操作信息', '操作出错,请联系管理员!');
				}
			});
		}
	});
};

/**
 * 工具栏 - 批量删除
 */
UserInfoView.prototype.delRecords = function() {
	var gridPanel = Ext.getCmp('UserInfoGrid');
	var selectRecords = gridPanel.getSelectionModel().getSelections();
	if (selectRecords.length == 0) {
		Ext.ux.Toast.msg("信息", "请选择要删除的记录!");
		return;
	}
	var ids = Array();
	for ( var i = 0; i < selectRecords.length; i++) {
		ids.push(selectRecords[i].data.useid);
	}
	this.delByIds(ids);
};

/**
 * 搜索面板——查询函数
 * @param self
 */
UserInfoView.prototype.search = function(self) {
	if (self.searchPanel.getForm().isValid()) { // Form表单验证
		self.searchPanel.getForm().submit({
				waitMsg : '正在提交查询',
				url : __ctxPath + '/ws/listUserInfo.do',
				success : function(formPanel, action) {
					var result = Ext.util.JSON.decode(action.response.responseText);
					self.gridPanel.getStore().loadData(result);
				}
			});
	}
};

2,新增,修改,查看页

/**
 * 接口用户管理——新增,修改,详情页面
 * 
 * @param useid         接口用户ID,无则显示新增面板
 * @param displayType   是否为查看模式,true则显示查看面板,否则显示编辑面板
 * @class UserInfoForm
 * @extend Ext.Window
 */
UserInfoForm = Ext.extend(Ext.Window, {
	//内嵌FormPanel
	formPanel : null,
	//接口用户名称
	userName : '',

	//构造函数
	constructor : function(_cfg) {
		Ext.applyIf(this, _cfg);
		this.initUIComponents();
		UserInfoForm.superclass.constructor.call(this, {
			id : 'UserInfoFormWin',
			layout : 'fit',
			resizable : false,
			draggable : false,
			closable : false,
			maximizable : false,
			items : this.formPanel,
			modal : true,
			autoHeight : true,
			width : 400,
			title : this.useid ? (this.displayType ? '查看接口用户 ': '编辑接口用户') : '新增接口用户',
			buttonAlign : 'center',
			buttons : this.buttons
		});
	},

	// 初始化组件
	initUIComponents : function() {
		this.initFormPanelUI();
		this.initButtons();
		// 编辑和查看时,加载表单对应的数据
		if (this.useid != null && this.useid != 'undefined') {
			this.formPanel.getForm().load({
				url : __ctxPath + '/ws/getUserInfo.do?useid=' + this.useid
			});
		}

	},
});

/**
 * 初始化表单面板UI
 */
UserInfoForm.prototype.initFormPanelUI = function() {
	this.formPanel = new Ext.FormPanel({
		layout : 'form',
		bodyStyle : 'padding:10px 10px 10px 10px',
		border : false,
		url : __ctxPath + '/ws/saveUserInfo.do',
		id : 'UserInfoForm',
		autoHeight : true,

		defaults : {
			anchor : '98%,98%'
		},
		defaultType : 'textfield',
		items : [ {
			fieldLabel : 'ID',
			name : 'userInfo.useid',
			id : 'useid',
			readOnly : true,
			xtype : this.useid ? 'textfield' : 'hidden'
		}, {
			fieldLabel : '用户名',
			name : 'userInfo.userName',
			id : 'userName',
			readOnly : this.displayType,
			allowBlank : false,
			blankText : '用户名不能为空',
			maxLength : 50,
			maxLengthText : '用户名不超过50个字符'
		}, {
			fieldLabel : '接入编号',
			name : 'userInfo.wsCode',
			id : 'wsCode',
			readOnly : this.displayType,
			allowBlank : false,
			blankText : '接入编号不能为空',
			maxLength : 20,
			maxLengthText : '接入编号不超过20个字符'
		}, {
			fieldLabel : '密钥',
			name : 'userInfo.userKey',
			id : 'userKey',
			readOnly : this.displayType,
			allowBlank : false,
			blankText : '接入编号不能为空',
			maxLength : 200,
			maxLengthText : '接入编号不超过200个字符'
		}, {
			fieldLabel : '行政区域代码',
			name : 'userInfo.xzqh',
			id : 'xzqh',
			readOnly : this.displayType,
			allowBlank : false,
			blankText : '接入编号不能为空',
			regex : /\w{6}/,
			regexText : '行政区域代码为6个字符'
		}, {
			fieldLabel : '状态',
			xtype : 'combo',
			hiddenName : 'userInfo.userStatus',
			id : 'userStatus',
			store : [ [ '0', '启用' ], [ '1', '禁用' ] ],
			editable : false,
			triggerAction : 'all',
			value : '0',
			readOnly : this.displayType
		}, {
			fieldLabel : '有效日期至',
			name : 'userInfo.activeTime',
			id : 'activeTime',
			xtype : 'datefield',
			editable : false,
			minValue : new Date(),
			format : 'Y年m月d日',
			readOnly : this.displayType,
			allowBlank : false,
			blankText : '有效日期不能为空'
		}, {
			fieldLabel : '创建时间',
			name : 'userInfo.timeA',
			id : 'timeA',
			readOnly : true,
			xtype : this.useid ? 'textfield' : 'hidden'
		}, {
			fieldLabel : '最后修改时间',
			name : 'userInfo.timeM',
			id : 'timeM',
			readOnly : true,
			xtype : this.useid ? 'textfield' : 'hidden'
		}]
	});
};

/**
 * 初始化按钮
 */
UserInfoForm.prototype.initButtons = function() {
	this.buttons = [ {
		text : '保存',
		iconCls : 'btn-save',
		handler : this.save.createCallback(this.formPanel, this),
		hidden : this.displayType
	}, {
		text : '重置',
		iconCls : 'btn-reset',
		handler : this.reset.createCallback(this.formPanel),
		hidden : this.displayType
	}, {
		text : '取消',
		iconCls : 'btn-cancel',
		handler : this.cancel.createCallback(this)
	} ];
};

/**
 * 保存表单
 */
UserInfoForm.prototype.save = function(formPanel, window) {
	if (formPanel.getForm().isValid()) { //执行表单验证
		formPanel.getForm().submit({
			method : 'POST',
			waitMsg : '正在提交数据...',
			success : function(fp, action) {
				Ext.ux.Toast.msg('操作信息', '成功保存信息!');
				var gridPanel = Ext.getCmp('UserInfoGrid');
				if (gridPanel != null) {
					gridPanel.getStore().reload();
				}
				window.close();
			},
			failure : function(fp, action) {
				Ext.MessageBox.show({
					title : '操作信息',
					msg : '信息保存出错,请联系管理员!',
					buttons : Ext.MessageBox.OK,
					icon : Ext.MessageBox.ERROR
				});
				window.close();
			}
		});
	}
};

/**
 * 重置表单
 */
UserInfoForm.prototype.reset = function(formPanel) {
	formPanel.getForm().reset();
};

/**
 * 取消表单
 */
UserInfoForm.prototype.cancel = function(window) {
	window.close();
};

extjs4mvc的crud extjs4 前端mvc模式 货物处理的crud 立即下载

相关推荐

Extjs6.0开发之mvvm与mvc的使用案例

附件是我实际开发的一个模块,因为比较简单,思路比较清楚,所以分享出来给大家。本模块采用的是Extjs6.0的开发技术,使用过extjs的朋友都知道,从Extjs5.0版本开始引入的新的开发模式,这种模式更清楚,更易理解,所以作为入门,大家不妨下载下来看看。 ps:本模块共有3个模块,其中两个模块采用mvc,一个采用mvvm (因为觉得麻烦,所以model层没有划分很细,不过我个人比较喜欢这种开发方式,主要看controll和view model的设计思路)。

Vue入门之Web端CURD前端项目示例

Vue入门之Web端CURD前端示例 随着vue.js越来越火,很多不太懂前端的小伙伴想要入坑。而入坑最好的办法就是上手实际操作,因此本文将重点放在实际操作上,对理论不做过多解释,不明白的地方小伙伴们可以去看官方文档或者相关书籍。 目录 一、安装npm 二、安装vue-cli 三、使用vue-cli创建项目 本文的示例项目操作环境如下: 平台/工具 说明 操作系统 Mac OS...

GeekAaron的博客 4015

S2SH+extjs做的简单CURD功能小例子

S2SH+extjs做的简单CURD功能小例子 初学EXTJS一周做的,网上看到N多例子没有源码或是有错误 这个刚写好 数据库用sqlserver2005 例子比较完整 就是没有放jar包(只有jdbc驱动jar和json的jar) 可以自己搭个S2SH环境把jar包放进去就能跑

《程序猿入职必会(5) · CURD 页面细节规范 》

本系列博文已连载到第五篇,通过前四篇博文,我们已完成了教师信息的基础增删改查功能,在介绍其他知识专栏之前,先来谈一谈CURD页面的规范问题。企业实战开发中,后台管理系统的大部分页面都是CURD的配置页,通常由查询条件+主体表格+弹窗表单三个部分组成,代码生成器基本也帮忙生成了大部分代码,但是不能过分依赖代码生成器,很多细节还是要调整的。刚入职的程序猿往往也会被安排以这一任务作为练手,在完成任务后,主管会审核其功能完成质量。

山人行 1278

西瓜书第二章——模型评估与选择(十折交叉验证/查准查全F1)

第二章——模型评估与选择

xsddys的博客 953

Vivado IP核:AXI Uartlite的使用经验分享

1. IP基本设置 在Vivado中,打开IP Catalog,搜索“uart”: 双击“AXI Uartlite”,进入IP配置界面: 这里可以配置IP的具体参数,设置时钟频率、波特率等,完成后,生成IP即可。 2. IP的时序特点 点击下面的链接可以下载该IP核的官方指导文档: https://china.xilinx.com/support/documentation/ip_docume...

weixin_43265132的博客 1万+

Layui之用户(CURD)

Layui之用户的增删改查

qq_65345936的博客 847

DBeaver连接IoTDB避坑指南:手动配置JDBC驱动的完整流程(附问题排查)

本文提供了在DBeaver中手动配置Apache IoTDB JDBC驱动的完整流程与避坑指南。详细解析了从驱动创建、库文件添加(关键是指向整个lib目录)到连接测试的每一步,并重点针对常见的ClassNotFoundException、连接拒绝等错误提供了深度排查方案,帮助用户高效建立图形化管理连接。

weixin_28327051的博客 396

使用laravel一分钟搭建CURD后台页面

配置即一切 一切皆于需求,后台从0开始搭建,但是写了一两个页面后发现太多的是对单表的增删改查操作,于是就想到了,能不能做一个快速搭建的后台。想到一句话,配置即一切。如果一个CURD后台能只进行配置就自动生成,该是多么美妙的事情,那么就开始搭建这么个结构。   首先配置文件应该怎么设计 起初想到将配置文件放到config目录下,但是想想还是放弃了这个想法,那样子可能会导致有一个“万能”文件,...

weixin_34029680的博客 275

MATLAB 论文复现——面向紧急需求响应的规模化灵活资源负荷管理快速决策方法

其次,对灵活资源参与EDR的功率分配模型进行了建模,并提出了基于分层分布式共识算法的快速决策方法,对功率分配模型进行快速求解,以满足EDR实时性的需求,在保证较高精度的前提下提高了决策速度。[1]孔祥玉,杨至端,孙裕策,等.面向紧急需求响应的规模化灵活资源负荷管理快速决策方法[J/OL].电力系统自动化,1-13[2024-07-29].http://kns.cnki.net/kcms/detail/32.1180.TP.20240709.1843.002.html.关键词: 规模化灵活资源;

sjr1478的博客 374

分享Charles抓包 显示<unknown> 解决方案 !

首先电脑上需要安装charles,然后需要设置手机上的WiFi设置,修改配置中的代理设置,把服务器的主机名设置成你电脑当前的ip地址(需要注意的是,你的代理服务器主机名的ip地址要和你当前连的ip地址的网段需要一致)。像 Charles 这样的工具,虽然功能强大,但仍然需要用户具备一定的配置和排障能力,以应对各种复杂的网络环境。通过将 Charles 的 SSL 证书正确安装到移动设备中,并在设置中启用“允许不安全的内容”选项,最终成功解决了这一问题,并准确抓取到所有请求数据。Charles 显示。

朱雀随云记的博客 8105

前后端分离-CRUD

前后端CRUD开发流程 1.login登录 1.1 后台代码 1.需要创建一个springboot项目, 在pom中引入 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-web-starter</artifactId> <version>1.7.1</version> </de

weixin_44141393的博客 630

【51单片机仿真】基于51单片机设计的多功能电子时钟日历(实时时钟闹钟秒表温度检测)系统__资料编号5

该项目是基于单片机的多功能电子时钟系统,集成了时间显示、闹钟设置、秒表功能以及温度显示等功能。主要硬件包括1602液晶显示屏、DS1302时钟芯片、DS18B20温度传感器和蜂鸣器。系统通过按键进行时间和闹钟的设置,并实时显示当前时间和温度。

嵌入式阿齐Archie 2万+

【原创】Extjs4 通用CURD方法

&lt;script&gt; /** * Author:xiaojiang * create_time: 2012-06-01 * reason: 通用curd 方法 * */ Ext.define("App.util.CommonDoActionUtil",{ /** * Form添加信息 合并insert 和 update 功能 *...

weixin_34100227的博客 133

基于STM32单片机设计的红外测温仪(带人脸检测)_34

当前设计的这款红外非接触式测温仪由测温硬件+上位机软件组合而成,主要用在地铁、车站入口等地方,可以准确识别人脸进行测温,如果有人温度超标会进行语音提示并且保存当前人脸照片。

8771

深度解析:LPDDR5 采样 Mask 背后的秘密 —— 从 Jitter 到 BER 全面剖析

在 LPDDR5 中,CK/DQS 信号相当于“指挥棒”,而数据(DQ)要在时钟节拍里被准确采样。Crosspoint Mask 区域横轴:时间 (Time)纵轴:电压 (Vref)👉 只要采样点落在这个区域内,数据就是正确的。否则就会出错。BERPBERPMask 就像高速公路的收费站口,如果车(采样点🚗)在车道内,顺利通过;一旦跑偏,就撞护栏。LPDDR5 的速率极高,UI 非常短,Mask 区域成为核心指标各种 Jitter、Noise 会不断压缩 Mask。

weixin_43199439的博客 354

Extjs 4.0.7 中模式窗口的CURD

1、定义form var form1 = Ext.create('Ext.form.Panel', { id:'form1', frame: true, //title: 'Form Fields', //width: 340, bodyPadding: 5, //baseCls: "x-plain", fieldDefaults: {

全欣 的专栏 2361

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

extjs curd

http://www.cnblogs.com/hanxirensheng/archive/2012/04/09/2439287.html /*!  * Ext JS Library 3.2.0  * Copyright(c) 2006-2010 Ext JS, Inc.  * licensing@extjs.com  * http://www.extjs.com/license  */ Ext.

kevin 711

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Extjs的编码规范【转】

一个组件一个JS文件,多个组件拼接成一个模块,这些组件都放在一个文件夹下,命名方法其实很简单,类似java如: 在App文件夹下的Scene文件夹内 App.Scene.ScreenManager.js     Ext.namespace("App.Scene.ScreenManager.XX","App.Scene.ScreenManager.YY"); App.Scene.ScreenControl.js     Ext.namespace("App.Scene.

horizon_cbl的专栏 1860

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

extjs+ssh的CURD(1)

最近帮同学做j2ee的作业,老师规定要使用SSH,我决定在前台使用我最近学习的extjs,我用的是3.3版本.还在学习阶段. 我做了管理员登录,用户管理和图书管理. 先贴登录的:   管理员登录前台部分代码: Ext.QuickTips.init();//启用错误提示 layout:"form",//在form布局下才能显示fieldLabel name:"adminP...

XiaOpieR 162

Extjs 编码规范

一个组件一个JS文件,多个组件拼接成一个模块,这些组件都放在一个文件夹下,命名方法其实很简单,类似java如:  在App文件夹下的Scene文件夹内  App.Scene.ScreenManager.js      Ext.namespace("App.Scene.ScreenManager.XX","App.Scene.ScreenManager.YY");  App.Scene.Sc

604

extjs Post方法提交json格式的数据到php

最近在做extjs4的gridpanel自动进行数据的curd,但是在做到C(添加)的时候,发现把数据以json格式Post方式提交给php的时候用 php中用$_post,$_REQUEST都得不到,用firedebug看到的请求信息确实是把JSON数据post给了PHP. 在网上找了一下午,终于发现问题了 原来PHP默认只识别application/x-www.form-urlencod

gtchenxw的专栏 5456

Extjs 代码规范

(转自:http://shubangjun.iteye.com/blog/1009041 ) 一个组件一个JS文件,多个组件拼接成一个模块,这些组件都放在一个文件夹下,命名方法其实很简单,类似java如:  在App文件夹下的Scene文件夹内  App.Scene.ScreenManager.js      Ext.namespace("App.Scene.ScreenManager.X

trymore的学习和分享 1475

Extjs4.2 MVC Grid的CURD简单例子

Grid是第一个要学的,Ext也一样,体验了一把,感觉MVC下用起来还是很爽的啊! 记录一下,免得忘了。 功能很简单,显示用户密码,然后CURD view在此 [code="js"] Ext.define('PJ.view.UserInfoPanel', { extend: 'Ext.panel.Panel', alias : 'widget.userinfopan...

peijie73的博客 242
上一篇: Hibernate与对象共事之编辑页面和update方法
下一篇: Axure RP 资源整理
小威
博客等级 码龄16年 27粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值