`
yangjay
  • 浏览: 5783 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

DataGrid内联ComboBox修改数据并提交至数据库

    博客分类:
  • flex
阅读更多

单击DataGrid单元格编辑出现ComboBox,选择相应的值,要使数据写入数据库就要调用DataGrid的itemEditEnd事件,itemEditEnd事件是在离开编辑单元格后触发的.

itemEditEnd事件调用的方法

private function updatePro(event:DataGridEvent):void{
             	var dataField:String = event.dataField;//获取绑定字段的名称
             	
           var proId:String = mydate.selectedItem.proId;//获取id
             	if(dataField=="completePreStr"){
             	var newData:String = "";
             	try{
             		newData = ComboBox(event.currentTarget.itemEditorInstance).selectedLabel//获取编辑后的新值
             }catch(errObject:Error){          	}
             	//判断为null的情况,否则很容易出现TypeError: Error #1009: 无法访问空对象引用的属性或方法
             if(newData!=null){
             		myProService.updateCompletePreStr(proId,newData);//调用更新方法
             }
             	}
             }

 全部源码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundColor="white" creationComplete="init2();init();" height="1332" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FCFCFC, #040303]" xmlns:local="*" xmlns:ns1="com.esria.samples.dashboard.view.*">
	<mx:Script>
        <![CDATA[
        	import mx.controls.List;
            import mx.collections.ArrayCollection;
            import mx.events.CuePointEvent;
            import mx.events.VideoEvent;
            import mx.controls.Alert;
			import mx.rpc.events.ResultEvent;
			import mx.events.DataGridEvent;
 
            
            [Bindable]
            private var FLV_URL:String = "zhajm_126296095230hd.flv";
 			
 			[Bindable]
            private var userInfoList:ArrayCollection;
            
            [Bindable]
            private var userInfo:Object;
            
            [Bindable]
            public var cards:ArrayCollection;
            /**
             * Initialize the ArrayCollection object.
             */
            private function init():void {
                department.getDepartment();
            }
            
            private function init2():void {
            	
                myservice.getProInfo("","");
            }
 			
 			public function resultHandler(result:ResultEvent):void{
				userInfoList = result.result as ArrayCollection;
				userInfo = userInfoList.getItemAt(0);
				//Alert.show(userInfo.userName);
			}
			
			private function changeHandler(event:Event):void {
            		myservice.getProInfo(departmentId.text,pageNum.text);
            }
            
            private function closeHandler(result:ResultEvent):void {
                cards = result.result as ArrayCollection;
            }
            
            private function formatDate(item:Object,column:DataGridColumn):String{
                if (item[column.dataField] == null) {
                 return "-";
                }
                return FD.format(item[column.dataField]);
               }
               
            private function formatPre(item:Object,column:DataGridColumn):String{
                if (item[column.dataField] == null) {
                 return "-";
                }
                if (item[column.dataField] == 1) {
                 return "模型";
                }
                if (item[column.dataField] == 2) {
                 return "预演";
                }
                if (item[column.dataField] == 3) {
                 return "小样";
                }
                if (item[column.dataField] == 4) {
                 return "渲染";
                }
                if (item[column.dataField] == 5) {
                 return "后期";
                }
                return item[column.dataField];
               }
             private function updatePro(event:DataGridEvent):void{
             	var dataField:String = event.dataField;//获取绑定字段的名称
             	
             	var proId:String = mydate.selectedItem.proId;//获取id
             	if(dataField=="completePreStr"){
             		var newData:String = "";
             		try{
             			newData = ComboBox(event.currentTarget.itemEditorInstance).selectedLabel//获取编辑后的新值
             		}catch(errObject:Error){
             			
             		}
             		//判断为null的情况,否则很容易出现TypeError: Error #1009: 无法访问空对象引用的属性或方法
             		if(newData!=null){
             			myProService.updateCompletePreStr(proId,newData);//调用更新方法
             		}
             	}
             }
        ]]>
    </mx:Script>
    <mx:Text fontFamily="微软雅黑" fontSize="12" text="项目名称" x="304" y="10"/>
    <mx:Text fontFamily="微软雅黑" fontSize="12" text="所属部门" x="85" y="9"/>
 <mx:ComboBox id="departmentId" dataProvider="{cards}" 
 	x="146" width="150" 
 	color="0x000000" 
 	labelField="departmentName" 
 	y="10" 
 	change="changeHandler(event)" 
 	enabled="true" 
 	editable="true"/>
<mx:TextInput width="150" id="pageNum"  x="365" y="11" change="changeHandler(event)"/>
    
    <mx:RemoteObject id="myservice" destination="provinceService" result="resultHandler(event)"/>
    <mx:RemoteObject id="myProService" destination="provinceService"/>
	<mx:DateFormatter id="FD" formatString="YYYY年MM月DD日" />
	
	<mx:Array id="coffeeArray"> 
<mx:Object label="readsea" data="readsea" /> 
<mx:Object label="readsea1" data="readsea11" /> 
<mx:Object label="readsea2" data="readsea22" /> 
<mx:Object label="readsea3" data="readsea33" /> 
</mx:Array>
	<mx:DataGrid id="mydate" dataProvider="{userInfoList}" height="600" width="100%" fontFamily="微软雅黑" fontSize="12" y="40" editable="true" itemEditEnd="updatePro(event)">
		<mx:columns>
			<mx:DataGridColumn dataField="proId" visible="false" id="proId" editable="false"/>
			<mx:DataGridColumn headerText="项目名称" dataField="proName" editable="false"/>
			<mx:DataGridColumn headerText="客户名称" dataField="customName" editable="false"/>
			<mx:DataGridColumn headerText="项目负责人" dataField="userNamePrincipal" editable="false"/>
			<mx:DataGridColumn headerText="类别" dataField="type" editable="false"/>
			<mx:DataGridColumn headerText="状态" dataField="state" editable="false"/>
			<mx:DataGridColumn headerText="开始日期" dataField="beginTime" labelFunction="formatDate" editable="false"/>
			<mx:DataGridColumn headerText="结束日期" dataField="completeTime" labelFunction="formatDate" editable="false"/>
			<mx:DataGridColumn headerText="实际时长" dataField="atl" editable="false"/>
			<mx:DataGridColumn headerText="总预算" dataField="forecastCost" editable="true"/>
			<mx:DataGridColumn headerText="项目进度" dataField="completePreStr" editorDataField="value" id="jindu" editable="true" >
			<mx:itemEditor>
                <mx:Component>
                    	<mx:ComboBox editable="true" width="100">
                        	<mx:dataProvider>
	                            <mx:String>模型</mx:String>
	                            <mx:String>预演</mx:String>
	                            <mx:String>小样</mx:String>
	                            <mx:String>渲染</mx:String>
	                            <mx:String>后期</mx:String>
                        	</mx:dataProvider>
                    	</mx:ComboBox>
                </mx:Component>
            </mx:itemEditor>
			</mx:DataGridColumn>
			<mx:DataGridColumn headerText="工作量" dataField="commision" editable="false"/>
			<mx:DataGridColumn headerText="任务数量" dataField="taskNum" editable="false"/>
		</mx:columns>
	</mx:DataGrid>
	<mx:Label text="{mydate.selectedItem.proId}" id="huahua"/>
<mx:RemoteObject id="department" destination="myObject" result="closeHandler(event)"/>
</mx:Application>

 

分享到:
评论

相关推荐

    Chapter 8 Data Binding to Controls

    例如,可以通过提供内联编辑功能让用户直接在 Grid 中修改数据,或者提供钻取功能让用户查看更详细的信息。 ### 结论 数据绑定是一种强大而灵活的技术,能够极大地简化应用程序中数据的管理和显示。通过本章节的...

    FlexBuilder教程.pdf

    - 这些控件包括ComboBox、List、HorizontalList、DataGrid、Tile、Menu和Tree等,它们可以从数据提供程序获取数据,展示列表信息。数据提供可以通过两种方式设置: - **内联数据提供**:直接在MXML标签内部定义...

    flex4.5学习笔记

    - **发送数据**: 向服务器发送数据,通常用于提交表单或更新服务器上的信息。 **知识点10:验证数据和设置数据格式** - **数据验证**: 确保输入的数据符合预期的格式和范围。 - **数据格式化**: 如日期格式化、数字...

    前端框架EasyUI

    1. **组件丰富**:EasyUI 提供了大量的 UI 组件,如表格(datagrid)、树形结构(tree)、对话框(dialog)、菜单(menu)、下拉框(combobox)、按钮(button)等,这些组件涵盖了日常开发中的常见需求。...

    JqueryEasyUI

    还包含了更多如MessageBox(提示框)、NumberBox(数字框)、ValidateBox(验证框)、Pagination(分页)、Window(窗口)、Panel(面板)、Tabs(标签)、Tree(树)、Layout(布局)、DataGrid(数据表)等,每个...

    jquery_easyui 很全面中文文档

    - `style`: 指定面板的内联样式。 - `fit`: 设置面板是否适应其父容器的尺寸,默认为 `false`。 - `border`: 设置是否显示面板边框,默认为 `true`。 - `doSize`: 设置是否在面板更新时重新计算尺寸,默认为 `...

    WPF编程宝典 part1

    22.3 DataGrid控件 621 22.3.1 改变列的尺寸与重新安排列 622 22.3.2 定义列 623 22.3.3 设置列的格式和样式 628 22.3.4 设置行的格式 629 22.3.5 显示行细节 630 22.3.6 冻结列 631 22.3.7 选择 632 22.3.8 排序 ...

    WPF编程宝典 part2

    22.3 DataGrid控件 621 22.3.1 改变列的尺寸与重新安排列 622 22.3.2 定义列 623 22.3.3 设置列的格式和样式 628 22.3.4 设置行的格式 629 22.3.5 显示行细节 630 22.3.6 冻结列 631 22.3.7 选择 632 22.3.8 排序 ...

Global site tag (gtag.js) - Google Analytics