`
simplehumn
  • 浏览: 186569 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

Ext与后台(二)

    博客分类:
  • EXT
阅读更多
[size=small]
上一篇中提到了列表显示、增加、删除。这篇说下修改和条件查询。
转载请注明出处: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]
  • 大小: 96.3 KB
1
0
分享到:
评论

相关推荐

    ext 前后台数据交互

    二、Ext.Ajax.request方法 Ext.Ajax.request方法是Ext提供的一种异步调用后台服务的方式,该方法可以将前台的请求发送到后台,并将后台的响应返回到前台。该方法可以传递参数,例如url、params、success、failure等...

    ext.net后台管理

    7. **C#服务器端API**:EXT.NET允许开发者使用C#在服务器端直接操作组件,与.NET框架无缝集成,提高了开发效率。 8. **MVC模式**:EXT.NET支持Model-View-Controller(MVC)设计模式,有利于代码组织和维护,提高...

    Ext与后台(一)

    标题 "Ext与后台(一)" 暗示了这篇博客文章可能主要关注的是ExtJS框架与后端服务器之间的交互。ExtJS是一个流行的JavaScript库,用于构建富客户端应用程序,而这里的“后台”可能指的是服务器端的技术,如PHP、Java...

    ext前后台交互实例

    在"ext前后台交互实例"中,JSON扮演着至关重要的角色,作为数据载体,在前端展示层与后端逻辑层之间架起了一座桥梁。 ### JSP页面与JSON的交互 JSP(JavaServer Pages)是一种用于生成动态网页的技术,它允许将...

    ext后台管理

    在"EXT后台管理"系统中,EXT主要负责前端的展示和交互,通过AJAX技术与后端PHP进行通信,实现数据的动态加载和更新。PHP作为服务器端语言,处理HTTP请求,执行业务逻辑,如数据的增删改查、验证、权限控制等。PHP还...

    Ext与后台服务器的交互操作

    ### Ext与后台服务器的交互操作 #### 一、概述 在现代Web开发中,前端框架如Ext JS(简称EXT)扮演着重要的角色,特别是在企业级应用中。Ext JS以其丰富的UI组件库、强大的数据处理能力和良好的用户体验而受到...

    Ext后台模板

    Ext后台模板是一款基于Ext JS框架开发的管理界面模板,它以简洁、清晰的布局和设计为特点,旨在提供高效、易用的后台操作系统。Ext JS是一个强大的JavaScript库,专用于构建富客户端应用,尤其适用于创建数据密集型...

    几种Ext后台模板和网站后台模板

    后台模板是为了提供给管理员或内部员工使用的,与前端用户界面相比,更注重功能性和效率,而不是视觉吸引力。然而,随着现代设计趋势的发展,后台模板也开始追求美观和用户体验。 “绚丽的使用Ext做的”模板,可能...

    ext后台模板

    6. **API接口集成**:EXT后台模板通常需要与后端服务器进行交互,实现数据的获取和提交。EXTJS 提供了AJAX和Store组件来处理与服务器的JSON或XML数据交换,这需要开发者理解RESTful API的设计和使用。 7. **主题和...

    经典EXT后台简单布局

    EXT后台简单布局,很好的,好用!!!!

    ext后台经典实例

    "EXT后台经典实例"指的是使用EXT与后端服务器进行交互的典型应用场景,通常涉及到Ajax通信、数据模型、Store和Grid等核心概念。 在EXT中,数据通常是通过Store来管理的。Store连接到后端服务器,负责加载、保存和...

    Ext与后台数据库交互

    ### Ext与后台数据库交互知识点详解 #### 一、Ext中常用的类 在Ext框架中,为了更好地处理数据和用户界面的交互,引入了一系列强大的类来简化开发过程。 ##### 1.1 Ext.data `Ext.data`是Ext框架的核心模块之一...

    EXTjavaScript 适合于做后台管理的界面的使用代码

    EXTJavaScript 是一种基于Web的前端开发框架,专为构建企业级后台管理界面而设计。它以其丰富的组件库、强大的数据网格、灵活的布局和高度可定制性而受到开发者们的青睐。EXTJavaScript 的核心是EXTJS,它是一个用纯...

    Ext简单后台布局

    Ext简单后台布局,分享给大家

    Ext.net后台分页增删改

    在"Ext.NET后台分页增删改"这个主题中,我们将探讨如何利用Ext.NET实现数据库后台分页、树形视图操作以及Grid面板的CRUD(创建、读取、更新和删除)功能。 首先,让我们深入了解一下后台分页。在Ext.NET中,为了...

    一个基于EXT的ASP.NET后台管理框架例子源码程序

    一个基于EXT的ASP.NET后台管理框架例子源码程序

    纯Ext搭建的后台管理模板

    纯Ext搭建的模板,网页右键不能查看源码。内含联系方式,可以联系我。

    Ext表格获取后台数据

    最终,我们使用Ext.grid.GridPanel显示了从后台获取的数据。 ExtJS框架提供了许多强大的功能和组件,例如表格控件、树形控件、表单控件等,使开发者能够快速构建RIA应用程序。 知识点: 1. ExtJS框架的基本概念...

    一款超炫的后台模版,Ext模拟Windows桌面

    【Ext模拟Windows桌面】是一款基于Java的Web应用后台模版,它利用了ExtJS库的强大功能,将传统的网页界面设计成类似Windows操作系统的工作环境。这个模版为用户提供了一种直观且熟悉的交互体验,使得在Web应用程序中...

    Ext后台管理系统模版_html

    Ext后台管理系统模版_html

Global site tag (gtag.js) - Google Analytics