flex datagrid DataGridColumn
发布时间:2020-12-15 03:33:52 所属栏目:百科 来源:网络整理
导读:找了好多次,竟然发现网上没有DataGridColumn itemRenderer?? RadioButton,悲剧. 有一个这样的. 这样做真的很容易.容易的原因是他在一行,不会创建新的实例. 我需要的是这个效果 代码奉上: ?xml version="1.0" encoding="utf-8"?s:TitleWindow xmlns:fx
找了好多次,竟然发现网上没有DataGridColumn itemRenderer?? RadioButton,悲剧. 有一个这样的. 这样做真的很容易.容易的原因是他在一行,不会创建新的实例. 我需要的是这个效果 代码奉上: <?xml version="1.0" encoding="utf-8"?> <s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="780" height="530" fontFamily="微软雅黑" fontSize="12" close="closeHandler(event)" creationComplete="completeHandler(event)" xmlns:components="com.gwtjs.components.*"> <fx:Script> <![CDATA[ import com.gwtjs.entity.User; import com.gwtjs.renderer.grid.GridColumnRadioButton; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.Text; import mx.events.CloseEvent; import mx.events.FlexEvent; import mx.events.ListEvent; import mx.managers.PopUpManager; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import spark.events.IndexChangeEvent; //修改时要用的store索引数 public var arrIndex:int = 0; [Bindable] public var item:Object = new Object(); [Bindable] public var action:String = "Insert"; [Bindable] public var userIds:String = ""; //用户角色寄存器 private var userParentArray:ArrayCollection = new ArrayCollection(); [Bindable] private var rolesArray:ArrayCollection = new ArrayCollection([ {roleId:"0",roleName:"请选择角色"},{roleId:"10",roleName:"系统管理员",status:1,roleAuths:"",rolesAuthNames:"",roleDesc:"系统管理员,可操作其它角色,具备全部权限" },{roleId:"20",roleName:"安全管理员",可以自提漏洞工单的需求"},{roleId:"30",roleName:"检测负责人",检测漏洞"},{roleId:"40",roleName:"修复负责人",roleDesc:"修复负责人,修复漏洞"} ]); [Bindable] private var bugsArray:ArrayCollection = new ArrayCollection([ {bugTypeCodes:"10",bugTypeNames:"成功入侵事件",bugLev:"高危",bugDesc:"成功入侵事件" },{bugTypeCodes:"20",bugTypeNames:"SQL 注射漏洞",bugLev:"中",bugDesc:"SQL 注射漏洞"},{bugTypeCodes:"30",bugTypeNames:"设计错误/逻辑缺陷",bugDesc:"设计错误/逻辑缺陷"},{bugTypeCodes:"40",bugTypeNames:"重要敏感信息泄露",bugDesc:"重要敏感信息泄露" },{bugTypeCodes:"50",bugTypeNames:"系统/服务运维配置不当",bugDesc:"系统/服务运维配置不当"},{bugTypeCodes:"60",bugTypeNames:"命令执行",bugLev:"常见",bugDesc:"命令执行"} ]); /**上级用户*/ [Bindable] private var userArray:ArrayCollection = new ArrayCollection([ {userId:"1000101",userAccount:"playCol",userName:"张111",parentUser:"",userMobile:"13902762078",status:"1",userAclTypeCode:"10",userAclTypeNames:"超级管理员",bugTypeNames:"蠕虫病毒",bugTypeCodes:"1",userDesc:"说明"},{userId:"1000102",userAccount:"administrator",userName:"李芳",parentUser:"1000101",bugTypeNames:"木马植入",bugTypeCodes:"2",{userId:"10001",userAccount:"admin888",userName:"陈真",bugTypeNames:"SQL注入",bugTypeCodes:"3",{userId:"10002",userAccount:"dzg867",userName:"王时",parentUser:"10001",userAclTypeCode:"20,30",userAclTypeNames:"安全管理员,检测人员",{userId:"10003",userAccount:"you29386",userName:"杨二辉",parentUser:"10002",userAclTypeCode:"30,40",userAclTypeNames:"检测人员",{userId:"10004",userAccount:"zhang382",userName:"施文杰",parentUser:"10003",status:"0",userAclTypeCode:"30",{userId:"10005",userAccount:"guangdong",userName:"晓科",修复人员",userDesc:"说明"} ]); [Bindable] public var items:ArrayCollection = new ArrayCollection(); protected function closeHandler(event:CloseEvent):void { PopUpManager.removePopUp(this); } import mx.formatters.DateFormatter; public function compareTime(str:String):Boolean { var myPattern1:RegExp=/-|:| /g; var dateFormatter:DateFormatter = new DateFormatter(); dateFormatter.formatString = "YYYY-MM-DD JJ:NN:SS"; var now:String= dateFormatter.format(new Date()); str = dateFormatter.format(str); str = str.replace(myPattern1,''); now = now.replace(myPattern1,''); if(Number(str)>Number(now)){return true;}else{return false;} } private function completeHandler(event:FlexEvent):void { var time:String = "2014-11-29 18:33:22"; var bool:Boolean = compareTime(time); if(bool){ trace("参考绑定",item.userAclTypeCode); trace(userAclTypeCode.text,parentUser.text); if(item!=null && item.userAclTypeCode!=null){ var roleIds:Array = item.userAclTypeCode.split(","); for(var i:int=0;i<roleIds.length;i++){ var role:Object = getRoleItem(roleIds[i]); userParentArray.addItem(role); } } } } private function setRolesArrayChecked():void { } /** * 验证名称 */ protected function nameChangeHandler(event:Event):void { //trace(Validator.validateAll(enNameValidator).length); if(Validator.validateAll(enNameValidator).length != 0) { userName.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OVER)); } } protected function saveBtnClickHandler(event:MouseEvent):void { var obj:Object = {}; obj.userId = new Date().getDay()+""+new Date().getMilliseconds(); obj.userAccount = userAccount.text; obj.userName = userName.text; obj.userMobile = userMobile.text; obj.status = status.selected; obj.parentUser = getSelectedUserParentCode(); obj.parentUserName = getSelectedUserParentName(); obj.userDesc = userDesc.text; trace(action,obj.parentUser,obj.parentUserName); if(action == "Insert"){ items.addItemAt(obj,arrIndex); }else{ obj.userAclTypeNames = item.userAclTypeNames; obj.bugTypeNames = item.bugTypeNames; obj.userId = item.userId; items.setItemAt(obj,arrIndex); } trace("items",items); trace(obj.userId,obj.userAccount,obj.userName,obj.userMobile,obj.status,obj.parentUserName,obj.userDesc); var user:User = new User(); user.userId = "userId"; user.userAccount = "userAccount"; user.password = "password"; user.userName = "userName"; user.parentUser = "parentUser"; user.userMobile = "userMobile"; user.status = "status"; user.userDesc = "userDesc"; user.userAclTypeCode = "userAclTypeCode"; user.userAclTypeNames = "userAclTypeNames"; user.bugTypeCodes = "bugTypeCodes"; user.bugTypeNames = "bugTypeNames"; UserServicesController.saveOrUpdate(user); // PopUpManager.removePopUp(this); } /**比对是否存在**/ private function validateUserSelected(id:String):Boolean { var bool:Boolean = false; for(var i:int=0;i<userParentArray.length;i++) { var obj:Object = userParentArray[i]; if(id==obj.userId){ return true; } } return bool; } /**获取某角色添加到寄存器*/ private function getRoleItem(id:String):Object { var bool:Object = {}; for(var i:int=0;i<userArray.length;i++) { var obj:Object = userArray[i]; //trace(id,obj.roleId); if(id==obj.userId){ bool = obj; } } return bool; } /**获取寄存器所有角色名称*/ private function getSelectedUserParentName():String { var bool:String = ""; for(var i:int=0;i<userParentArray.length;i++) { var obj:Object = userParentArray[i]; bool+=obj.userName+","; } return bool.substr(0,bool.length-1); } /**获取寄存器所有角色标识*/ private function getSelectedUserParentCode():String { var bool:String = ""; for(var i:int=0;i<userParentArray.length;i++) { var obj:Object = userParentArray[i]; bool+=obj.userId+",bool.length-1); } protected function resetBtnClickHandler(event:MouseEvent):void { } /** * 用户角色选择操作,用户角色临时寄存器 * */ public function userSelectBoxChangeHandler(event:Event):void { var box:CheckBox = event.target as CheckBox; trace("TODO Auto-generated method stubn",box.label); var bool:Boolean = validateUserSelected(box.label); trace("存在否",bool); if(!bool){ var role:Object = getRoleItem(box.label); //trace(role); userParentArray.addItem(role); } } import spark.components.RadioButton; /** * 用户角色选择操作,用户角色临时寄存器 * */ public function userSelectRadioChangeHandler(event:Event):void { var box:RadioButton = event.target as RadioButton; trace("group",box.group,"groupName",box.groupName,"name",box.name,"n",box); myParentUserRadioButtonGroup.selection = box; var selObj:Object; for(var i:int =0 ;i<userArray.length;i++) { var obj:Object = userArray[i]; if(box.value==obj.userId){ //如果相同,selected=true; //obj.checked = true; selObj = obj; }else{ //如果不同,selected=false; //obj.checked = false; } } myParentUserRadioButtonGroup.selectedValue = selObj; } protected function serverPagingBarFunctionHandler(event:Event):void { // TODO Auto-generated method stub } protected function bugTypesComboChangeHandler(event:IndexChangeEvent):void { // TODO Auto-generated method stub } protected function userRolesComboChangeHandler(event:IndexChangeEvent):void { var obj:Object = userRolesCombo.selectedItem; if(obj.roleName=="安全管理员") { bugTypesCombo.enabled = true; }else{ bugTypesCombo.enabled = false; } } /** * 请求异常 * 客户端的faultCode以Client开头,服务器端的faultCode以Server开头 * */ private function httpServiceFault(event:FaultEvent):void { var str:String = "客户端异常"; var index:int = -1; var faultCode:String = event.fault.faultCode.toString(); index = faultCode.indexOf("Server",0); if(index!=-1) { str= "服务端异常"; } //trace(index,str); //客户端的faultCode以Client开头,服务器端的faultCode以Server开头 Alert.show(event.fault.toString(),faultCode); trace(event.fault.toString()); } /** * 数据请求成功处理 * */ private function saveOrUpdateResultHandler(event:ResultEvent):void { var obj:Object = event.result; trace(obj); Alert.show(obj.toString(),"保存成功"); } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <fx:Array id="enNameValidator"> <mx:Validator property="text" source="{userAccount}" required="true" requiredFieldError="请输入登陆帐号" /> <mx:StringValidator property="text" source="{userAccount}" tooShortError="字符串太短了,请输入最少3个字符. " tooLongError="字符串太长了,请输入最长32个字符. " minLength="3" maxLength="32"/> <mx:RegExpValidator property="text" source="{userAccount}" flags="g,i" expression="^[a-zA-Z]w+$" noMatchError="请输入3到32位英文字母与数字,且英文字母在前数字在后" trigger="{saveBtn}" triggerEvent="click" required="true"/> </fx:Array> <!--无猜中远程调用--> <s:RemoteObject id="UserServicesController" destination="UserServicesController" fault="httpServiceFault(event)" endpoint="http://127.0.0.1:8080/buganalysis/messagebroker/amf"> <s:method name="saveOrUpdate" result="saveOrUpdateResultHandler(event)" /> </s:RemoteObject> <s:RadioButtonGroup id="myParentUserRadioButtonGroup" /> </fx:Declarations> <mx:Form textAlign="left" verticalGap="0" width="100%" height="568" paddingLeft="6" paddingRight="6" paddingBottom="6" paddingTop="6"> <mx:HBox width="100%" height="32"> <mx:FormItem label="登陆账号:" width="50%" height="32" horizontalAlign="center"> <s:TextInput id="userAccount" text="{item.userAccount}" textAlign="left" width="100%"/> </mx:FormItem> <mx:FormItem label="用户姓名:" width="50%" height="32" horizontalAlign="center"> <s:TextInput id="userName" text="{item.userName}" textAlign="left" width="100%"/> </mx:FormItem> <mx:FormItem label="工号状态正常:" horizontalAlign="center" width="0" height="0" visible="false" > <s:CheckBox id="status" selected="{item.status!=null}" textAlign="left" width="100%"/> </mx:FormItem> </mx:HBox> <mx:HBox width="100%" height="32"> <mx:FormItem label="角色选择:" width="50%" height="32" horizontalAlign="center"> <s:ComboBox dataProvider="{rolesArray}" skinClass="assets.skin.ComboBoxTextInputEditSkin" width="100%" labelField="roleName" id="userRolesCombo" change="userRolesComboChangeHandler(event)" /> </mx:FormItem> <mx:FormItem label="权限类型:" width="50%" height="32" horizontalAlign="center"> <s:ComboBox dataProvider="{bugsArray}" skinClass="assets.skin.ComboBoxTextInputEditSkin" enabled="false" selectedIndex="1" width="100%" labelField="bugTypeNames" id="bugTypesCombo" change="bugTypesComboChangeHandler(event)" /> </mx:FormItem> </mx:HBox> <mx:HBox width="100%" height="32"> <mx:FormItem label="用户密码:" width="100%" height="32" horizontalAlign="center"> <s:TextInput id="userPwd" displayAsPassword="true" text="{item.userPwd}" textAlign="left" width="100%"/> </mx:FormItem> <mx:FormItem label="重复密码:" width="100%" height="32" horizontalAlign="center"> <s:TextInput id="userOldPwd" displayAsPassword="true" text="{item.userOldPwd}" textAlign="left" width="100%"/> </mx:FormItem> </mx:HBox> <mx:FormItem label="手机号:" width="100%" height="32" horizontalAlign="center"> <s:TextInput id="userMobile" text="{item.userMobile}" textAlign="left" width="100%"/> </mx:FormItem> <mx:FormItem label="上级用户:" width="100%" height="228" horizontalAlign="center"> <mx:DataGrid id="userParentUserGrid" width="100%" height="100%" dataProvider="{userArray}" > <mx:columns> <mx:DataGridColumn headerText="选择" textAlign="left" width="58"> <mx:itemRenderer> <fx:Component> <mx:HBox textAlign="left" verticalAlign="middle" horizontalAlign="center"> <s:RadioButton value="{data.userId}" textAlign="left" name="parent_user" group="{outerDocument.myParentUserRadioButtonGroup}" groupName="myParentUserRadioButtonGroup" selected="{data.checked}" change="outerDocument.userSelectRadioChangeHandler(event)" /> </mx:HBox> </fx:Component> </mx:itemRenderer> </mx:DataGridColumn> <mx:DataGridColumn headerText="用户编号" dataField="userId" textAlign="left" width="78"> </mx:DataGridColumn> <mx:DataGridColumn headerText="用户姓名" dataField="userName" textAlign="left" width="160" /> </mx:columns> </mx:DataGrid> <components:Pager id="parentUserServerPagingBar1" url="USER_DATAGRID" datagrid="{userParentUserGrid}" pageSize="3" myFunction="serverPagingBarFunctionHandler(event)" destination="userFlexServices" methodName="getUsers" height="26" width="100%" /> </mx:FormItem> <mx:FormItem label="用户说明:" width="100%" height="88" horizontalAlign="center" paddingTop="6"> <s:TextArea id="userDesc" text="{item.userDesc}" textAlign="left" width="100%" maxChars="218" height="68" > </s:TextArea> </mx:FormItem> <mx:HBox visible="false" height="0"> <s:TextInput text="{item.userAclTypeCode}" id="userAclTypeCode" visible="false" height="0" /> <s:TextInput text="{item.userNames}" id="parentUser" visible="false" height="0" /> <s:TextInput id="roleId" height="0" visible="false" text="{item.roleId}" textAlign="left" width="100%"/> </mx:HBox> <mx:HBox width="100%" height="32" horizontalAlign="center" verticalAlign="middle"> <s:Button label="重置" id="resetBtn" click="resetBtnClickHandler(event)" /> <s:Button label="保存" id="saveBtn" click="saveBtnClickHandler(event)" /> </mx:HBox> </mx:Form> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |