flex + spring + BlazeDS + google App JDO 实现一个CRUD.

简介: flex + spring + BlazeDS + google App JDO 实现一个CRUD.   分页在上一个 博客讲了   如何做一个分页.现在要在这个分页上面在做一个CURUD.   列表页面    form页面.表单.  删除页面,可以删除单个和多个. 查询页面.支持分页查询.   最重要的是分页列表里面.删除一个后.要刷新数据. 调用.outerD

flex + spring + BlazeDS + google App JDO 实现一个CRUD.

 

分页在上一个 博客讲了

 

如何做一个分页.现在要在这个分页上面在做一个CURUD.

 

列表页面

 



 form页面.表单.

 删除页面,可以删除单个和多个.

查询页面.支持分页查询.

 

最重要的是分页列表里面.删除一个后.要刷新数据.

调用.outerDocument.removeOne([data.id.toString()]);

 

用 flex 做的ajax 效果不错. 代码写的也很少.很方便的维护.

 

SystemUserList.mxml

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml"
  backgroundColor="#EEEEEE" width="100%" fontSize="12" initialize="initApp();" height="100%"
  xmlns:common="common.page.*">
  
<mx:RemoteObject id="systemUserService" destination="systemUserService">
	<mx:method name="remove" result="removeHandler(event)"/>
	<mx:method name="list" result="listHandler(event)"/>
	<mx:method name="listSize" result="listSizeHandler(event)"/>
</mx:RemoteObject>
<mx:Script>
	<![CDATA[
		import systemUser.model.SystemUser;
		import mx.events.CloseEvent;
		import common.event.DataGridDeleteEvent;
		import common.event.DataGridEditEvent;
		import common.event.DataGridCheckBoxEvent;
		import mx.collections.ArrayCollection;
		import mx.events.ItemClickEvent;
		import mx.rpc.events.ResultEvent;
		import common.page.PageConf;
		import mx.controls.Alert;
		import mx.managers.PopUpManager;
		//列表显示数据.
		[Bindable]
      	private var listData:ArrayCollection;
		private var myPageConf:PageConf;
		//初始化函数.
		private function initApp():void{
			//定义一个默认加载类.
	        myPageConf = new PageConf(0,15,0);
	        //第一次默认查询数据.
	        systemUserService.listSize(getCommonPage());
	        //给通用分页Bar绑定事件.
	        commonPageBar.pageLikBar.addEventListener(ItemClickEvent.ITEM_CLICK,
        		function(event:ItemClickEvent):void{//匿名函数.
	        		myPageConf.pageItemClick(event, commonPageBar.pageInfo);
	        		systemUserService.listSize(getCommonPage());
	        });
		}
		//通用查询,返回Map参数.
		private function getCommonPage():Object{
			var objMap:Object = new Object();
			if(loginName_search.text != ""){objMap["loginName,=="] = loginName_search.text;}
			if(passwd_search.text != ""){objMap["passwd,=="] = passwd_search.text;}
			if(name_search.text != ""){objMap["name,=="] = name_search.text;}
			if(phone_search.text != ""){objMap["phone,=="] = phone_search.text;}
			if(email_search.text != ""){objMap["email,=="] = email_search.text;}
			return objMap;
		}
		//新建Form弹出窗口.
		public function addForm(id:String):void
		{
			var addForm:SystemUserForm = new SystemUserForm();
	        if(id != null){
		        addForm.formId = id;//将id赋值,查询交给form.
	        }
	        //添加保存事件响应,保存后刷新数据.
	        addForm.addEventListener("saveSystemUser",
	        	function(event:Event):void{//匿名函数.
	        		systemUserService.listSize(getCommonPage());
	        });
			PopUpManager.addPopUp(addForm, this, true);
			PopUpManager.centerPopUp(addForm);
		}
		//删除单个记录.
		public function removeOne(ids:Array):void
		{
			Alert.show("是否确认删除?", "提示", 3, this, 
				function(event:CloseEvent):void{//匿名函数.
					if (event.detail == Alert.YES){
						systemUserService.remove(ids);
					}
	        });
		}
		//删除多个记录.
		public function removeAll():void
		{
			Alert.show("是否确认删除?", "提示", 3, this, 
				function(event:CloseEvent):void{//匿名函数.
					if (event.detail == Alert.YES){
						var ids:Array = new Array();
						for each(var data:Object in dataGrid.selectedItems){
							ids.push(data.id);
						}
						if(ids.length == 0){
							Alert.show("请选择数据,按住shift或ctrl进行选择.","提示");
						}else{
							systemUserService.remove(ids);
						}
					}
	        });
		}
		
		/*****下面是回调函数.*****/
		//查询总数.回调函数.
		private function listSizeHandler(event:ResultEvent):void
		{
			var pageSize:Number = event.result as Number;
			myPageConf.total = pageSize;
			systemUserService.list(myPageConf.getStart(), myPageConf.getEnd(),getCommonPage());
			//查询出总记录数时.显示信息.
			myPageConf.showPageInfo(commonPageBar.pageInfo);
		}
		//查询数据.回调函数.
		private function listHandler(event:ResultEvent):void
		{
			 listData = event.result as ArrayCollection;
		}
		//删除方法.回调函数.
		public function removeHandler(event:ResultEvent):void
		{
			if(event.result.toString() == "true"){
				Alert.show("删除成功!","提示");
				systemUserService.listSize(getCommonPage());
			}else{
				Alert.show("删除失败!","提示");
			}
		}
	]]>
</mx:Script>
<!--//列表开始.-->
<mx:VBox>
	<mx:HBox width="100%">
		<mx:Label text="登录名"/><mx:TextInput id="loginName_search" width="80"/>
		<mx:Label text="密码"/><mx:TextInput id="passwd_search" width="80"/>
		<mx:Label text="姓名"/><mx:TextInput id="name_search" width="80"/>
		<mx:Label text="电话"/><mx:TextInput id="phone_search" width="80"/>
		<mx:Label text="email"/><mx:TextInput id="email_search" width="80"/>
		<mx:Button label="查询" click="systemUserService.listSize(getCommonPage());"/>
	</mx:HBox>
	<mx:DataGrid width="100%" height="420" id="dataGrid" allowMultipleSelection="true"
		editable="false" dataProvider="{listData}">
	    <mx:columns>
	        <mx:DataGridColumn headerText="登录名" dataField="loginName"/>
	        <mx:DataGridColumn headerText="密码" dataField="passwd"/>
	        <mx:DataGridColumn headerText="姓名" dataField="name"/>
	        <mx:DataGridColumn headerText="电话" dataField="phone"/>
	        <mx:DataGridColumn headerText="email" dataField="email"/>
			<mx:DataGridColumn width="85"><mx:itemRenderer><mx:Component>
				<mx:HBox width="100%" height="100%">
				<mx:LinkBar height="22" itemClick="itemClick(event);">
					<mx:dataProvider><mx:Array>
								<mx:String>修改</mx:String>
								<mx:String>删除</mx:String>
					</mx:Array></mx:dataProvider>
				</mx:LinkBar>
				<mx:Script>
					<![CDATA[
						import mx.events.CloseEvent;
						import mx.controls.Alert;
						import mx.events.ItemClickEvent;
						private function itemClick(itemClick:ItemClickEvent):void{
							if(itemClick.index == 0){
								outerDocument.addForm(data.id.toString());
							}else if(itemClick.index == 1){//删除单个数据.
								outerDocument.removeOne([data.id.toString()]);
							}
						}
					]]>
				</mx:Script>
				</mx:HBox>
			</mx:Component></mx:itemRenderer></mx:DataGridColumn>
	    </mx:columns>
	</mx:DataGrid>
	<mx:HBox width="100%">
		<mx:Button label="新增" click="addForm(null);"/>
		<mx:Button label="删除" click="removeAll();"/>
		<mx:Spacer width="100"/>
        <common:PageBar id="commonPageBar"/>
	</mx:HBox>
</mx:VBox>
</mx:Module>

 

SystemUserForm.mxml

 

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" 
    title="SystemUser表单" initialize="initApp();"
    backgroundColor="#EEEEEE" showCloseButton="true"
    close="PopUpManager.removePopUp(this);"
	borderColor="#869CA7" fontSize="12">
<mx:Style>
.errorTip{fontSize: 12;}
</mx:Style>
<mx:RemoteObject id="systemUserService" destination="systemUserService">
	<mx:method name="findById" result="findByIdHandler(event)"/>
	<mx:method name="save" result="saveHandler(event)"/>
</mx:RemoteObject>
    <mx:Script>
        <![CDATA[
        	import mx.validators.Validator;
        	import mx.controls.Alert;
        	import systemUser.model.SystemUser;
        	import mx.rpc.events.ResultEvent;
            import mx.managers.PopUpManager;
            
            public var isValid:Boolean = false;//
            public var formId:String = null;//保存ID主键.
            //初始化函数.
			private function initApp():void{
				if(formId != null){//如果formId存在,查询.
			        systemUserService.findById(formId);
		        }
			}
			//查询响应处理.
			private function findByIdHandler(event:ResultEvent):void
			{
				var mySystemUser:SystemUser = event.result as SystemUser;
				setFormData(mySystemUser);
			}
			//保存函数.
            private function save():void {
            	var myValid:Array = Validator.validateAll([//校验表单.
            		loginName_valid,
            		passwd_valid,
            		name_valid,
            		phone_valid,
            		email_valid,
            		createDate_valid,
            		islock_valid,
            		loginTimes_valid,
            		lastLogin_valid
            	]);
            	if(myValid.length == 0){
	            	var mySystemUser:SystemUser = new SystemUser();
					mySystemUser.loginName = loginName_id.text;
					mySystemUser.passwd = passwd_id.text;
					mySystemUser.name = name_id.text;
					mySystemUser.phone = phone_id.text;
					mySystemUser.email = email_id.text;
					mySystemUser.createDate = createDate_id.text;
					mySystemUser.islock = islock_id.text;
					mySystemUser.loginTimes = loginTimes_id.text;
					mySystemUser.lastLogin = lastLogin_id.text;
					if(formId != null){//如果formId不为null.将值保存.
	            		mySystemUser.id = formId;
	            	}
	                systemUserService.save(mySystemUser);
             	}
            }
            //保存后,关闭.
            private function saveHandler(event:ResultEvent):void {
            	dispatchEvent(new Event("saveSystemUser"));
                PopUpManager.removePopUp(this);
            }
            //当编辑的时候,设置form.
            public function setFormData(mySystemUser:SystemUser):void {
				loginName_id.text = mySystemUser.loginName;
				passwd_id.text = mySystemUser.passwd;
				name_id.text = mySystemUser.name;
				phone_id.text = mySystemUser.phone;
				email_id.text = mySystemUser.email;
				createDate_id.text = mySystemUser.createDate;
				islock_id.text = mySystemUser.islock;
				loginTimes_id.text = mySystemUser.loginTimes;
				lastLogin_id.text = mySystemUser.lastLogin;
            }
        ]]>
    </mx:Script>
	<!--//校验开始.-->
	<mx:StringValidator id="loginName_valid" source="{loginName_id}" property="text"/>
	<mx:StringValidator id="passwd_valid" source="{passwd_id}" property="text"/>
	<mx:StringValidator id="name_valid" source="{name_id}" property="text"/>
	<mx:StringValidator id="phone_valid" source="{phone_id}" property="text"/>
	<mx:StringValidator id="email_valid" source="{email_id}" property="text"/>
	<mx:StringValidator id="createDate_valid" source="{createDate_id}" property="text"/>
	<mx:StringValidator id="islock_valid" source="{islock_id}" property="text"/>
	<mx:StringValidator id="loginTimes_valid" source="{loginTimes_id}" property="text"/>
	<mx:StringValidator id="lastLogin_valid" source="{lastLogin_id}" property="text"/>
	
	<!--//表单开始.-->
	<mx:Form id="creditCardForm">
		<mx:FormItem label="登录名"><mx:TextInput id="loginName_id"/></mx:FormItem>
		<mx:FormItem label="密码"><mx:TextInput id="passwd_id"/></mx:FormItem>
		<mx:FormItem label="姓名"><mx:TextInput id="name_id"/></mx:FormItem>
		<mx:FormItem label="电话"><mx:TextInput id="phone_id"/></mx:FormItem>
		<mx:FormItem label="email"><mx:TextInput id="email_id"/></mx:FormItem>
		<mx:FormItem label="创建时间"><mx:TextInput id="createDate_id"/></mx:FormItem>
		<mx:FormItem label="是否锁定"><mx:TextInput id="islock_id"/></mx:FormItem>
		<mx:FormItem label="登录次数"><mx:TextInput id="loginTimes_id"/></mx:FormItem>
		<mx:FormItem label="上次登录时间"><mx:TextInput id="lastLogin_id"/></mx:FormItem>
		<mx:FormItem><mx:HBox>
		        <mx:Button click="save();" label="保存"/>
		        <mx:Button click="PopUpManager.removePopUp(this);" label="关闭"/>
		</mx:HBox></mx:FormItem>
	</mx:Form>
</mx:TitleWindow>  

 

附件是全部代码.

功能上面.排序还是没有实现服务端排序.还就是Grid 默认的客户端排序.

其他CRUD 的基本功能都完成了.

 

部署到服务器上面地址

 

http://myflexeye.appspot.com/

 

可以用这个做点小东西了.

下面研究下.拖拽.

 

 

目录
相关文章
|
2月前
|
JavaScript 前端开发 API
Google Earth Engine(GEE)扩展——制作的GEE app的误区
Google Earth Engine(GEE)扩展——制作的GEE app的误区
28 0
|
6月前
|
API 开发工具 Android开发
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
146 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
99 0
|
API Android开发 图形学
【Unity3D】Android App Bundle(aab)打包上架Google Play介绍
总体说来,Android App Bundle打包有3种方式,每种方式都有成功上架Google Play进行测试通过,因此实用程度还是挺高的。能够理解以下内容的前提是会打apk包,知道如何生成Asset Bundle文件,这块内容可以参考我的上一篇文章。
1074 0
【Unity3D】Android App Bundle(aab)打包上架Google Play介绍
|
2月前
Google Earth Engine APP(GEE)—— 一个简单的加载影像的UI(RGB,NDWI和NDVI)这里使用时间滑块进行时间选择
Google Earth Engine APP(GEE)—— 一个简单的加载影像的UI(RGB,NDWI和NDVI)这里使用时间滑块进行时间选择
26 0
|
2月前
|
机器学习/深度学习 编解码 算法
Google Earth Engine APP(GEE)——加拿大陆地生态系统中的土壤碳储量数据集
Google Earth Engine APP(GEE)——加拿大陆地生态系统中的土壤碳储量数据集
29 0
|
iOS开发
Zoom在App Store上架10周年之际 全球iOS和Google Play的累计下载量已超10亿次
Zoom在App Store上架10周年之际 全球iOS和Google Play的累计下载量已超10亿次
101 0
Zoom在App Store上架10周年之际 全球iOS和Google Play的累计下载量已超10亿次
|
Android开发
【Google Play】2021 年 8 月之后的 APK 与 App Bundle 上传格式问题(二)
【Google Play】2021 年 8 月之后的 APK 与 App Bundle 上传格式问题(二)
210 0
【Google Play】2021 年 8 月之后的 APK 与 App Bundle 上传格式问题(二)
|
安全 Android开发
【Google Play】2021 年 8 月之后的 APK 与 App Bundle 上传格式问题(一)
【Google Play】2021 年 8 月之后的 APK 与 App Bundle 上传格式问题(一)
576 0
【Google Play】2021 年 8 月之后的 APK 与 App Bundle 上传格式问题(一)
【Google Play】App Bundle 使用详解 ( 应用模块化 )(二)
【Google Play】App Bundle 使用详解 ( 应用模块化 )(二)
176 0
【Google Play】App Bundle 使用详解 ( 应用模块化 )(二)

热门文章

最新文章