`
hacker47
  • 浏览: 340236 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

FLEX提高篇---------DataGrid里嵌入checkBox等控件等操作

阅读更多

先看看效果:

 

 

整个代码其实没有什么奥妙之处,值得注意的是这一句: click="outerDocument.editHanlder();

 

 

贴一下代码段:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	 layout="vertical" backgroundColor="black">
	<mx:Style>
		global{
			font-size:12;	
		}
	</mx:Style>
	<mx:Script>
		<![CDATA[
			import com.myevent.UserEvent;
			import mx.managers.PopUpManager;
			import com.component.EditWindow;
			import com.component.User;
			import mx.controls.Alert;
			import mx.collections.ArrayCollection;
			[Bindable]
			private var ac:ArrayCollection=new ArrayCollection([{id:0,name:'张三',selected:true},{id:1,name:'李四',selected:false},{id:2,name:'王五',selected:false}]);
			
			private function deleteHanlder():void{
				
				for(var i:int=0;i<ac.length;i++){
					if(i<0) break;
					if(ac.getItemAt(i).selected){
						ac.removeItemAt(i);
						ac.refresh();
						i--;
					}
				}
			}
			
			public function clickHanlder(obj:Object):void{
				if(obj.chxBox.selected){
					ac.getItemAt(userDg.selectedIndex).selected=true;
				}else{
					ac.getItemAt(userDg.selectedIndex).selected=false;
				}
			}
			
			public function editHanlder():void{
					var ew:EditWindow=new EditWindow();
					var user:User=new User();
					user.initUser(userDg.selectedItem.id,userDg.selectedItem.name);
					ew.user=user;
					ew.addEventListener(UserEvent.USEREDITE,userEditHandler);
					PopUpManager.addPopUp(ew,this,true);
					PopUpManager.centerPopUp(ew);
			}
			
			public function userEditHandler(e:UserEvent):void{
				ac.getItemAt(userDg.selectedIndex).id=e.user.id;
				ac.getItemAt(userDg.selectedIndex).name=e.user.name;
				ac.refresh();
			}
		]]>
	</mx:Script>
	<mx:DataGrid id="userDg" dataProvider="{ac}">
		<mx:columns>
			<mx:DataGridColumn  dataField="id" headerText="操作">
				<mx:itemRenderer>
					<mx:Component>
					<mx:HBox>
						<mx:CheckBox id="chxBox" selected="{data.selected}" click="outerDocument.clickHanlder(this);"/>
					</mx:HBox>
					</mx:Component>
				</mx:itemRenderer>
			</mx:DataGridColumn>
			<mx:DataGridColumn  dataField="id" headerText="编号"/>
			<mx:DataGridColumn  dataField="name" headerText="姓名"/>
			<mx:DataGridColumn headerText="修改">
				<mx:itemRenderer>
					<mx:Component>
						<mx:HBox>
							<mx:Button label="编辑" click="outerDocument.editHanlder();"/>
						</mx:HBox>
					</mx:Component>
				</mx:itemRenderer>
			</mx:DataGridColumn>
		</mx:columns>
	</mx:DataGrid>
	<mx:Button label="删除" click="deleteHanlder();" enabled="{ac.length>0}"/>
</mx:Application>

 

下面是弹出窗口:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="vertical" 
	width="400" 
	height="300"
	showCloseButton="true" 
	styleName="titleWin"
	close="PopUpManager.removePopUp(this);">
	<mx:Style>
		.titleWin{
			closeButtonUpSkin:Embed(source="btn.swf",symbol="btn");
			closeButtonDownSkin:Embed(source="btn.swf",symbol="btn");
			closeButtonOverSkin:Embed(source="btn.swf",symbol="btn");
		}
	</mx:Style>
	<mx:Script>
		<![CDATA[
			import mx.managers.PopUpManagerChildList;
			import mx.utils.StringUtil;
			import com.myevent.UserEvent;
			import mx.managers.PopUpManager;
			
			[Bindable]
			public var user:User;
			
			private function subEdit():void{
				user.id=parseInt(StringUtil.trim(userId.text));
				user.name=StringUtil.trim(userName.text);
				var e:UserEvent=new UserEvent(UserEvent.USEREDITE,user);
				dispatchEvent(e);
				PopUpManager.removePopUp(this);
			}
		]]>
	</mx:Script>
	<mx:Form>
		<mx:FormItem label="编号:">
			<mx:TextInput id="userId" text="{user.id}" restrict="0-9"/>
		</mx:FormItem>
		<mx:FormItem label="姓名:">
			<mx:TextInput id="userName" text="{user.name}"/>
		</mx:FormItem>
		<mx:FormItem>
			<mx:Button label="确定" click="subEdit()"/>
		</mx:FormItem>
	</mx:Form>
</mx:TitleWindow>

 

 

 

下面是自定义的一个事件:用来处理数据传递:

 

package com.myevent
{
	import com.component.User;
	
	import flash.events.Event;

	public class UserEvent extends Event
	{
		public static const USEREDITE:String="useredit";
		public var user:User;
		public function UserEvent(type:String,user:User)
		{
			this.user=user;
			super(type);
		}
		
		override public function clone():Event{
			var e:UserEvent=new UserEvent(USEREDITE,user);
			return e;
		}
	}
}

 

 

下面一个VO或者MODEL来进行数据的封装:

 

package com.component
{
	[Bindable]
	public class User
	{
		public function User()
		{
			super();
		}
		public function initUser(id:int=0,name:String="",age:Number=0):void{
			this.id=id;
			this.name=name;
			this.age=age;
		}
		public var id:int=0;
		public var name:String="";
		public var age:Number=0;
	}
}

 

 

 

15
5
分享到:
评论
6 楼 S_uperM_arket 2009-09-20  
调用editHanlder时为什么前面要加outerDocument,不能直接调用吗?
5 楼 baofen14787 2009-01-23  
我用的是puremvc框架。

<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;

[Bindable]
public var topicData:ArrayCollection;

public function clickHanlder(obj:Object):void{  
                if(obj.chxBox.selected){  
                    topicData.getItemAt(dataGrid.selectedIndex).selected=true;  
                }else{  
                    topicData.getItemAt(dataGrid.selectedIndex).selected=false;  
                }  
            }
]]>
</mx:Script>
<mx:DataGrid id="dataGrid" width="100%" height="100%" dataProvider="{topicData}">
<mx:columns>
<mx:DataGridColumn>
<mx:itemRenderer>
<mx:Component>
<mx:HBox>
<mx:CheckBox id="chxBox" selected="{topicData.selected}" click="outerDocument.clickHanlder(this);"/> 
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn  headerText="title" dataField="title"/>
<mx:DataGridColumn headerText="Compare" dataField="Compare"/>
</mx:columns>
</mx:DataGrid>


这个topicData.selected没有定义 怎么办啊? 是topiData是动态加载的
4 楼 caowei3047 2008-09-24  
很好的资料,我最近正在学习Flex,这玩意确实牛!
3 楼 zookie 2008-09-23  
不错啊,嘿嘿
2 楼 bigbone 2008-09-23  
看页面有点像C#.net的页面不过改了个命名空间
1 楼 fins 2008-09-22  
不是很了解flex 不过从这篇文章看来
我觉得 flex似乎也是一个中间产物
以他为基础 还有很多工作可以去做啊 呵呵

相关推荐

    flex-datagrid-advancedDataGrid-demo

    本示例"flex-datagrid-advancedDataGrid-demo"显然是为了演示如何在Flex应用中有效地使用这两种数据网格控件。 首先,DataGrid是最基础的数据展示组件,它允许开发者以表格的形式展示数据,支持排序、选择和编辑等...

    wpf-DataGrid-checkBox

    在WPF(Windows Presentation Foundation)开发中,DataGrid控件是一种强大的数据展示工具,它允许用户以表格形式显示和操作数据。在这个特定的场景中,我们关注的是如何在DataGrid的表头添加一个复选框(checkbox)...

    Flex Datagrid checkbox实现

    总的来说,实现Flex Datagrid的复选框功能是一个基础但实用的操作,它可以帮助用户在大量数据中进行多选操作,从而提高交互性。随着对Flex的深入学习,可以进一步探索Datagrid的各种高级特性和自定义功能,以满足更...

    Flex DataGrid CheckBox 一个简单的全选

    在Flex开发中,DataGrid组件是一个非常常用的控件,它用于展示数据集合,并提供交互式操作,如排序、选择等。本示例聚焦于DataGrid中的CheckBox集成,特别是实现一个全选的功能。以下是对这个主题的详细解释: 一、...

    Flex4 带checkbox的DataGrid

    其中包含一个三种状态的checkbox,DataGrid代码中引用了 带多选框的DataGrid(AdvancedDataGrid) 表头有全选CheckBox,三种状态:全选、部分选择、无选择 如果改变目录结构,需要在CustomCheckBox.mxml中更改inner....

    Datagrid-filter插件

    `Datagrid-filter`插件正是针对这种需求设计的,它是一个高效且实用的Grid插件,旨在提升数据网格的可操作性和用户交互性。这个插件的核心功能是为每一列提供过滤条件,使得用户能够快速筛选出所需的信息,极大地...

    flex Datagrid checkbox全选

    在Flex开发中,Datagrid是一种常用的组件,用于展示表格数据,而checkbox全选功能则是提高用户体验的一个重要特性。本文将详细讲解如何实现Flex Datagrid中checkbox的全选功能。 首先,我们要了解Flex Datagrid的...

    flex-带checkbox的datagrid

    标题"flex-带checkbox的datagrid"指的是在Flex Datagrid组件中集成复选框(checkbox)的功能。这种功能常用于多选操作,例如用户可以选择一组数据项进行批量删除、编辑或其他操作。下面将详细介绍如何在Flex中实现带...

    flex datagrid 嵌套checkbox实现全选

    在Flex开发中,数据网格(DataGrid)是用于展示数据集合的强大组件,它允许用户以表格形式查看和操作数据。本示例关注的是在DataGrid中嵌套复选框(Checkbox),并实现全选功能。这在需要用户批量选择或操作数据的...

    datagrid-dnd(可以拖放的datagrid)

    总的来说,datagrid-dnd是EasyUI提供的一种增强用户交互的工具,使得数据网格中的行可以通过拖放操作自由排序,提高了用户在数据管理中的效率和体验。对于开发者来说,理解并掌握这个特性,能够提升Web应用的用户...

    jeasyui-datagrid-datagrid

    JeasyUI DataGrid是一款基于jQuery的轻量级组件,它为开发者提供了丰富的功能,如数据分页、排序、过滤等,极大地提高了开发效率。本文将深入探讨JeasyUI DataGrid的使用方法、特性以及常见问题的解决方案。 1. **...

    datagrid-groupview.js

    总的来说,"datagrid-groupview.js"是jQuery EasyUI框架中增强Datagrid组件的一个重要工具,它使得数据展示更加直观,便于用户理解和操作。通过学习和实践使用这个插件,开发者可以提高其在Web应用开发中的数据呈现...

    flex基于datagrid控件的增删改查及分页实现

    1. Flex DataGrid 控件: DataGrid是Flex中一个强大的组件,用于展示结构化数据集。它可以显示多列数据,并允许用户进行排序、选择和编辑。DataGrid通常与ArrayCollection或XMLListCollection等数据提供者结合使用,...

    flex datagrid 标题栏添加 checkbox 和 数据行 checkbox 连动

    在Flex开发中,数据网格(DataGrid)是一种常用的组件,用于展示结构化的数据。当我们需要在数据网格中实现复选框功能,以便用户可以多选数据行时,通常会遇到两个主要需求:一是如何在标题栏添加复选框,二是如何使...

    jeasyui-datagrid-datagrid2.zip

    jeasyui-datagrid-datagrid2.zip jeasyui-datagrid-datagrid2.zip jeasyui-datagrid-datagrid2.zip jeasyui-datagrid-datagrid2.zip jeasyui-datagrid-datagrid2.zip

    flex datagrid checkbox实现源码

    在Flex编程中,数据网格(DataGrid)是一种常用的组件,用于展示和操作表格形式的数据。在数据网格中,复选框(Checkbox)的实现对于用户交互尤为重要,它允许用户进行多选操作,例如批量删除、修改等。"flex ...

    datagrid-export.js

    该文件是用来将easyui-datagrid按照格式导出到excel中,可以将合并的单元格,复杂的表头,背景色及字色等按照显示的样式导出到excel,即所见即所得

    Flex-DataGrid源码及资料

    Flex DataGrid是一款在Adobe Flex开发环境中广泛使用的组件,主要用于展示和操作大量结构化的数据。它是一种灵活的表格视图,可以轻松地实现数据的排序、筛选、分页等功能。在这个"Flex-DataGrid源码及资料"的压缩包...

    easyui-datagrid2-demo.zip

    "easyui-datagrid2-demo.zip" 文件包含了使用 EasyUI Datagrid 的一个示例,帮助开发者了解如何实现数据的加载、分页、排序等基本操作。 在这个 demo 中,我们可以从以下几个方面学习 EasyUI Datagrid 的使用: 1....

    Flex4 DataGrid控件行编辑项目

    在Flex4.6开发环境中,DataGrid控件是用于展示数据集合的重要组件,它提供了丰富的功能,如排序、分页和自定义列显示。在这个项目中,我们关注的是如何实现DataGrid的行编辑功能,特别是在行中嵌套ComboBox控件以...

Global site tag (gtag.js) - Google Analytics