`
huanglz19871030
  • 浏览: 248729 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Ext实现添删查改二

阅读更多

上一篇中提到了列表显示、增加、删除。这篇说下修改和条件查询。
转载请注明出处:http://simplehumn.iteye.com/blog/486269
2.2修改
第一种方式
先贴代码
tbar里的items这样写的

......
{
	text:'<img src="/lncrm/resources/images/img/cog_edit.png"/>修改'	,
	tooltip : '修改会期',
	handler : hqUpdate
}
......


hqUpdate方法,弹出窗口并初始化数据

//修改会期
var hqUpdate = function(){
	var record = sm.getSelected();
	if(record&&sm.getCount()==1){
		form = dhhhqWindow(record,"update");
		form.getForm().reset();
	    form.getForm().loadRecord(record);//修改时带入数据
	}else{
		Ext.Msg.alert('友情提示','您必须且只能选择一行数据以便进行办理!');
	}
}


窗口写成一个function,利于对象的销毁和创建,方法里传了2个参数,做判断或提交验证(数据库层),关于界面的allowBlank:false验证不多说,网上很多例子。最后附上弹出窗口的图片附件。

var widthValue = 150;
var nowYear = new Date().getYear();
// 日期范围代码
Ext.apply(Ext.form.VTypes, {
	daterange : function(val, field) {
		var date = field.parseDate(val);

		// We need to force the picker to update values to recaluate the
		// disabled dates display
		var dispUpd = function(picker) {
			var ad = picker.activeDate;
			picker.activeDate = null;
			picker.update(ad);
		};

		if (field.startDateField) {
			var sd = Ext.getCmp(field.startDateField);
			sd.maxValue = date;
			if (sd.menu && sd.menu.picker) {
				sd.menu.picker.maxDate = date;
				dispUpd(sd.menu.picker);
			}
		} else if (field.endDateField) {
			var ed = Ext.getCmp(field.endDateField);
			ed.minValue = date;
			if (ed.menu && ed.menu.picker) {
				ed.menu.picker.minDate = date;
				dispUpd(ed.menu.picker);
			}
		}
		/*
		 * Always return true since we're only using this vtype to set the
		 * min/max allowed values (these are tested for after the vtype test)
		 */
		return true;
	}
});
//新增或修改会期弹出窗口
var dhhhqWindow = function(record,update){
	//会期信息
	var hqInfo = new Ext.form.FieldSet({
		title: '会期信息',
        collapsible: true,
        autoHeight:true,
        bodyStyle:'width:100%;',
        labelWidth : 100,
		labelAlign : 'right',
        items:[{
			layout:'column',//从左往右的布局				
			items:[{
				columnWidth:.5,
				layout:'form',
				//labelWidth : 60,
				items:[{
					xtype : 'textfield',
					fieldLabel : '会期编号',
					allowBlank : false,
					name : 'dhhhqCommonId',
					width : widthValue
				},{      
					xtype : "datefield",  
					id:'dhhhqStartDate',
					name : 'dhhhqStartDate',
					fieldLabel : "会期开始日期",
					emptyText : 'YYYY-MM-DD',
					allowBlank : false,
					width : widthValue,
					vtype : 'daterange',
					format : 'Y-m-d', // 指定日期格式,年-月-日
					endDateField : 'dhhhqEndDate'
				}]
			},{
				columnWidth:.5,
				layout:'form',
				//labelWidth : 60,
				items:[{
					xtype : 'textfield',
					fieldLabel : '会期名称',
					allowBlank : false,
					name : 'dhhhqName',
					width : widthValue
				},{      
					xtype : "datefield",  
					id:'dhhhqEndDate',
					name : 'dhhhqEndDate',
					fieldLabel : "会期结束日期", 
					allowBlank : false,
					emptyText : 'YYYY-MM-DD',
					width : widthValue,
					format : 'Y-m-d', // 指定日期格式,年-月-日
					// value:new Date(), //默认当前时间
					vtype : 'daterange',
					startDateField :'dhhhqStartDate'
				}]
			}]
		},{
			layout:'column',//从左往右的布局				
			items:[{
				columnWidth:.6,
				layout:'form',
				items:[{
					xtype : 'textarea',
					fieldLabel : '会期说明',
					name : 'dhhhqDescribe',
					regex:/^.{0,100}$/,
					regexText:'会期说明不超过100字',
					width : 350
				}]
			},{
				columnWidth:.3,
				layout:'form',
				items:[{
					html : '(会期说明不超过100字)'
				}]
			}]
		}]
	});
	
	// 弹出窗口“订货会会期”的按钮集合
	var hqButtons = [{
		xtype : 'submit',
		text : '修改',
		handler : function() {
			if(dhhhqForm.getForm().isValid()){
				dhhhqForm.getForm().submit({ 
					url:'../../om/dhhDate.do', 
					params:{method:'saveOrUpdateDhhDate'}, 
					method:'post', 
					waitMsg:'正在保存,请稍等...', 
					success:function(form,action){ 
						  hqWindow.destroy();
						  Ext.Msg.alert("友情提示","保存目标成功!",
								function(){
									hqStore.reload();
								},this
							);
					}, 
					failure:function(form,action){
						Ext.MessageBox.alert("友情提示", "服务器出现错误请稍后再试!");
					} 
				}); 
			}
		}
	}, {
		text : '取消',
		handler : function() {
			hqWindow.destroy();
		}
	}];
	
	var dhhhqForm = new Ext.FormPanel({
		bodyStyle : 'padding:5px',
		frame : true,
		name : 'dhhhqForm',
		layoutOnTabChange : true,
		autoHeight : true,
		autoWidth : true,
		labelWidth : 100,
		labelAlign : 'right',
		items : [hqInfo]
	});
	
	// 将表单放到一个窗口中,并显示
	var hqWindow = new Ext.Window({
		title : "会期信息",
		width : 850,
		height : 420,
//		autoHeight : true,
		autoScroll : true,
		collapsible : true,
		maximizable : true,
		layout : 'fit',
		modal : true,
		items : [dhhhqForm]
	});

	hqWindow.show();
	return dhhhqForm;
};


说明:
Ext.apply(Ext.form.VTypes, {
daterange : function(val, field) {。。。。。。});
这段的意思是,让日期控件可以控制2个日期“开始日期”不小于“结束日期”,使用方法如"会期开始日期"、"会期结束日期"。
修改时初始化的数据是显示grid列表时和json串一起传到前台,var record = sm.getSelected();这样选中这行把record带入弹出窗口就能初始化。grid的store里可以传你想要的任何数据,也就是说 (var hqStore = new Ext.data.JsonStore({fields:[......]});)数据里的fields的项数可以比(var cm = new Ext.grid.ColumnModel([......]);)表头的项数多,修改时初始化的数据都应经在界面的grid里了。

第二种方式
上面的这种方法是,查询时把数据以json形式都传到前台grid的store里,然后修改或查看详情时,不再查询数据库,直接从界面拿数据。
但是这种方法有时候不能满足业务需求,下面介绍另一种方式:打开弹出窗口时,调后台方法初始化数据。
修改按钮有所改变,加了一个hqForm.load({......})

var dhhButton = [{
	xtype : 'submit',
	text : '修改',
	handler : function() {
		if(selectDhhForm.getForm().isValid()){
			dhhWindow.destroy();
			var dhhId = selectDhhForm.form.findField('javaid').getValue();
			var hqForm = dhhhqWindow();
			hqForm.load({
				url : '../../om/dhhDate.do?method=initDhhDate&dhhId='+ dhhId,
				waitMsg : '正在载入数据,请稍等...',
				method:"get",
				success:function(form,action){},
				failuer : function(){
					 Ext.Msg.alert('友情提示', '数据加载失败请重试!');
				}
			});
		}
	}
}];


弹出窗口的formpanel也有所变化

var dhhhqForm = new Ext.FormPanel({
	bodyStyle : 'padding:5px',
	frame : true,
	name : 'dhhhqForm',
	layoutOnTabChange : true,
	autoHeight : true,
	autoWidth : true,
	labelWidth : 100,
	labelAlign : 'right',
	reader : new Ext.data.JsonReader({
        root:'root'
    }, [
    	{name: 'dhhId', mapping:'dhhId'},
        {name: 'commonId', mapping:'commonId'},
        {name: 'brand', mapping:'brand'},
        {name: 'dhhStartDate', mapping:'dhhStartDate'},
        {name: 'dhhEndDate', mapping:'dhhEndDate'},
        {name: 'name', mapping:'name'},
        {name: 'area', mapping:'area'} 
    ]),
	items : [hqInfo]
});


多了个reader : new Ext.data.JsonReader({}),reader里的值就是界面想要的值,后台以json串形式发过来,这里按照这种格式接收就OK了。

2.3查询
这里的查询是指,界面输入或选择一些条件,然后点击查询按钮,显示符合条件的数据。至于条件跟formpanel差不多,点击按钮的时候也是提交form,这里不在写查询条件的代码。在完成grid列表以后,只需修改一小部分就可以实现查询功能。
以下是查询按钮,hqStore.removeAll();先清掉grid数据,hqStore.baseParams 查询时的参数都写在这里(参考yourgame在javaeye里的一段回复),hqStore的URL里不带任何参数,然后hqStore.reload({params:{start:0,limit:10}});好了到这里查询就OK了,只刷新grid数据界面无刷新。hqStore.baseParams 是关键。

new Ext.Button({
	text : '查询',
	minWidth : 60,
	handler : function() {
		hqStore.removeAll();
		// 查询时传参数要用这种方式,否则翻页的时候这些参数无效
		hqStore.baseParams = {departmentarea : Ext.get('departmentarea').getValue(),status : Ext.get('status').getValue(),status : Ext.get('status').getValue(), dhhYear : Ext.get('dhhYear').getValue(), javaid : Ext.get('javaid').getValue()  }; 
		hqStore.reload({params:{start:0,limit:10}});
	}
})


说明:hqStore.baseParams 里面,前面那个是参数名称name,冒号后面的是值value,多个参数以逗号分开。
[/size]

分享到:
评论

相关推荐

    Ext实现添删查改一

    标题“Ext实现添删查改一”涉及到的是使用Ext JS框架进行Web应用开发中的基本操作——添加、删除、查询和修改数据。Ext JS是一个强大的JavaScript库,主要用于构建富客户端的桌面级Web应用,它提供了丰富的组件和...

    ext增删查改demo

    EXTJS是一种基于JavaScript的富客户端应用开发框架,主要用于构建...通过这个"ext增删查改demo",开发者可以学习到EXTJS如何实现CRUD操作,以及如何处理和展示JSON数据,这对于构建交互式的企业级Web应用非常有帮助。

    extjs实现增删查改

    在“extjs实现增删查改”这个主题中,我们将探讨如何使用ExtJS来实现基本的数据操作功能。 首先,增删查改(CRUD,Create, Read, Update, Delete)是任何数据管理应用的核心功能。在ExtJS中,我们可以利用Grid ...

    ext与php增删查改.docx

    ext与php增删查改.docx

    ext与php增删查改.pdf

    ext与php增删查改.pdf

    ext与php增删查改

    根据提供的文件信息,我们可以深入探讨该系统的实现细节及其关键技术点,包括如何利用ExtJS和PHP完成用户管理功能(增删查改)。以下是对这些技术点的详细解释: ### 关键技术点 #### 1. ExtJS简介 ExtJS是一款...

    extjs3连接mysql数据库实现增删查改功能

    2. **模型定义**: 在ExtJS 3中,使用`Ext.data.Record`来定义数据模型。定义字段名和类型,这将映射到数据库的列。例如,如果你有一个名为`users`的表,你可能需要定义如下模型: ```javascript var User = new...

    一个Struts2+Ext实现增删改查的实例

    这个实例结合了Struts2后端框架与ExtJS前端库,实现了基本的数据操作功能——增、删、改、查,这在Web应用开发中是非常基础且重要的。 在Struts2框架中,核心概念包括Action、Result和Interceptor。Action是业务...

    解析Extjs与php数据交互(增删查改)

    《深入理解Extjs与PHP数据交互:实现增删查改》 在Web开发中,前端与后端的数据交互是至关重要的。本文将详细介绍如何利用Extjs框架与PHP进行数据的增删查改操作,帮助开发者更好地理解和应用这两种技术的结合。 ...

    extjs mvvm增删查改模糊查询

    在这个"extjs mvvm增删查改模糊查询"主题中,我们将深入探讨如何使用ExtJS的MVVM模式来实现对数据的操作,包括添加、删除、修改和查找,同时结合模糊查询功能,提高用户体验。 首先,MVVM模式的核心在于ViewModel层...

    EXT 增删改查的一个例子

    EXT的表格组件(Ext.grid.Panel)支持行级别的编辑,结合行选择器和表单组件,可以方便地实现增删改查操作。表单组件(Ext.form.Panel)用于收集用户输入,并能与数据模型关联,实现数据的双向绑定。 在这个例子中...

    学习使用SQLAlchemy框架,在ORM模式下实现Python与MySQL的连接、结构设计和增删查改.zip

    在这个"学习使用SQLAlchemy框架,在ORM模式下实现Python与MySQL的连接、结构设计和增删查改"的教程中,我们将深入理解SQLAlchemy的核心概念和使用方法。 首先,让我们从建立Python与MySQL的连接开始。在SQLAlchemy...

    java+ext+数据库基础实现

    java+ext+数据库基础实现增删查改,学习用

    Ext+ssh 实现增删改查小例子

    这个"Ext+SSH"实现的增删改查例子,其核心流程可能如下: 1. **用户界面**:使用ExtJS创建一个表格,显示从服务器获取的数据。表格可能包含编辑和删除按钮,用户可以通过这些按钮触发操作。 2. **Ajax通信**:当...

    ext+SSH增删改查

    2. 删:EXT的表格或树组件可以显示数据列表,用户选择要删除的项,发送删除请求。同样,请求由Struts处理,调用Service层的删除方法,通过Hibernate执行SQL删除语句。 3. 改:用户选择需要修改的记录,在EXT的编辑...

    linux ext2 文件系统模拟 c语言实现

    Linux的EXT2(第二扩展文件系统)是早期广泛使用的文件系统之一,特别是在嵌入式系统和Linux服务器上。EXT2的C语言实现是一项技术性极强的任务,涉及到对操作系统底层机制的理解,包括文件系统的结构、inode、超级块...

    JSP+Ext实现CURD

    在IT行业中,"JSP+Ext实现CURD"是一个常见的开发任务,涉及到Web应用的后端和前端交互,用于数据的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。JSP(JavaServer Pages)是Java的一种动态网页技术,...

    Ext左树有表格 增删改查

    在"Ext左树有表格 增删改查"这个主题中,我们主要关注的是ExtJS如何实现左侧树形结构与右侧表格的交互,以及在这样的布局中进行数据的增、删、改、查操作。 首先,ExtJS中的树形组件(TreePanel)可以用来展示层级...

    ext4 基础功能增删该查

    本文将深入探讨ext4文件系统在“增删改查”这四个基本操作上的实现原理和使用方法。 一、增加(Add) 1. 创建文件:在ext4文件系统中,新建一个文件涉及到在i节点(Inode)表中分配一个新的i节点,并在目录项中...

    JSP中使用EXT实现grid table

    2. 分页:EXT Grid可以通过配置Paging Toolbar来实现数据分页,这样用户可以在大量数据中轻松浏览。 3. 排序:Grid中的每一列都可以设置为可排序,用户只需点击列头,即可根据该列数据进行升序或降序排序。 4. ...

Global site tag (gtag.js) - Google Analytics