`
hacker47
  • 浏览: 343554 次
  • 性别: 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和其它控件使用

    本篇文章将深入探讨Flex中的DataGrid及其与其他控件的协同使用。 首先,DataGrid的核心功能是显示数据集合。它可以绑定到ArrayCollection或XMLListCollection等数据源,通过数据提供程序(DataProvider)动态更新...

    flex中Datagride嵌套checkbox

    总之,Flex的DataGrid组件为我们提供了强大的数据展示功能,通过自定义列和事件处理,我们可以轻松地在其中嵌入复选框,实现数据的多选操作。这种技巧在许多数据交互丰富的应用程序中都十分常见。

    CheckboxInDataGrid

    在Flex编程领域,`CheckboxInDataGrid`是一个常见的应用场景,它涉及到如何在DataGrid组件中嵌入并操作Checkbox控件。下面将详细讲解这个主题,包括Flex的基本概念、Checkbox组件、DataGrid组件以及如何将两者结合...

    CheckboxInDataGridSample

    "CheckboxInDataGridSample"是一个示例项目,它演示了如何在Flex中的DataGrid组件中集成Checkbox控件,并实现全选功能。这个项目对于理解Flex编程、数据网格布局以及事件处理等方面具有很高的学习价值。 首先,`...

    SMT轨迹导入程序:C#源码实现DXF文件导入生成G代码

    内容概要:本文详细介绍了如何使用C#开发一个SMT贴片机的轨迹导入程序,该程序能够解析CAD设计的DXF文件并将其中的轨迹转换为适用于SMT设备的G代码。主要内容涵盖DXF文件的读取与解析、LWPOLYLINE的提取、坐标转换、G代码生成以及保存。此外,文中还探讨了一些实际应用中的注意事项,如坐标系转换、插补算法的选择和错误处理方法。通过具体的代码示例展示了如何利用netDxf库简化DXF文件的操作,并提供了路径优化和Z轴控制的具体实现。 适合人群:从事SMT行业或相关领域的工程师和技术人员,尤其是有一定C#编程基础并对数控编程感兴趣的开发者。 使用场景及目标:①将CAD设计的DXF文件高效转化为SMT设备所需的G代码;②确保生成的G代码能够在实际设备上正确执行,提高生产效率和准确性;③解决坐标系转换、插补算法选择等问题,增强程序的鲁棒性和实用性。 其他说明:建议在真实设备运行前先用CAM软件进行仿真测试,同时注意处理好文件读取和数值转换中的异常情况。

    西门子PLC程序套件:堆垛机、输送线及触摸屏程序集成

    内容概要:本文详细介绍了基于西门子S7-1200 PLC的物流仓储自动化系统,涵盖了硬件架构、通信处理、运动控制算法、触摸屏交互等多个方面的内容。硬件上,采用S7-1217C处理器、G120变频器、ET200S远程站和激光测距传感器构建了一个精密的空间坐标定位体系。通信部分利用Profinet和RS485进行数据传输,并通过SCL和STL编写了多种实用的功能块,如急停处理、温漂补偿、路径优化等。运动控制方面,通过速度梯形图与S型曲线结合的方式实现高精度定位。触摸屏界面则通过WinCC Advanced实现报警记录和货位状态显示等功能。 适合人群:从事物流仓储自动化系统设计、开发和维护的技术人员,尤其是熟悉西门子PLC编程的工程师。 使用场景及目标:适用于需要高精度、高可靠性的物流仓储自动化项目的开发和调试。主要目标是提高系统的响应速度、定位精度和稳定性,确保设备能够长时间稳定运行。 其他说明:文中提供了大量实际代码片段和技术细节,帮助读者更好地理解和应用相关技术。此外,还分享了一些现场调试的经验和技巧,如温漂补偿、通信优化等。

    新5.txt

    新5

    MATLAB模糊控制算法在驾驶员制动意图识别中的应用:试验案例、模型与模糊控制器

    内容概要:本文详细介绍了如何利用MATLAB的Fuzzy工具箱实现驾驶员制动意图的识别。文中首先解释了模糊控制的基本概念及其在处理不确定性和模糊性方面的优势。随后,通过具体的MATLAB代码示例展示了如何构建模糊推理系统(FIS),包括定义输入输出变量、隶属函数以及规则库。此外,还讨论了实际应用中的优化措施,如调整隶属函数参数和引入多输入变量以提高系统的鲁棒性和准确性。最后,通过对比实验验证了模糊控制相比传统方法在响应时间和识别精度上的优越性。 适合人群:从事自动驾驶或智能辅助驾驶系统研究的技术人员,尤其是对模糊控制算法感兴趣的开发者。 使用场景及目标:适用于需要精确识别驾驶员制动意图的应用场合,如高级驾驶辅助系统(ADAS)、自动驾驶车辆的安全控制模块等。主要目标是提高系统的智能化水平,增强行车安全性。 其他说明:文中提供的代码片段和实验数据有助于读者深入理解模糊控制的工作机制,并为实际项目开发提供参考。同时,强调了参数调整的重要性,指出模糊控制并非万能解决方案,需结合具体应用场景进行优化。

    三菱PLC QD75模块功能块FB的编程方式与实际应用经典案例

    内容概要:本文详细介绍了三菱PLC QD75模块FB功能块在伺服电机控制中的应用。首先阐述了选择FB功能块的原因,即编程方式清晰明了,便于维护和修改。接着展示了关键代码及其分析,包括输入输出变量、中间变量、初始化、运动参数设置、当前位置监控、目标位置判断以及错误处理等方面的内容。文中还提供了多个实用技巧,如速度切换判断、状态监控、错误处理、调试方法等。此外,文章强调了这套程序的适用范围和借鉴意义,尤其适合初学者作为模板进行项目级开发。 适合人群:具备一定PLC编程基础,尤其是三菱PLC初学者和项目级开发者。 使用场景及目标:①帮助读者理解三菱PLC QD75模块FB功能块的工作原理;②提供一个成熟的伺服电机控制程序模板,供读者在实际项目中参考和改进;③提高程序的可维护性和可靠性。 其他说明:文章不仅提供了详细的代码示例和注释,还分享了许多实际应用中的经验和技巧,有助于读者更好地理解和应用这些知识。

    少儿编程scratch项目源代码文件案例素材-恶魔的冒险 Level Devil.zip

    少儿编程scratch项目源代码文件案例素材-恶魔的冒险 Level Devil.zip

    少儿编程scratch项目源代码文件案例素材-鬼影斩.zip

    少儿编程scratch项目源代码文件案例素材-鬼影斩.zip

    Node-Webkit Javascript (NW.js)

    Node-Webkit Javascript (NW.js)

    基于UDS的Bootloader:源码与测试用例共享,支持Autosar与多种通信协议定制,包括CANfd,多个版本可选

    内容概要:本文详细介绍了基于UDS(Unified Diagnostic Services)协议的Bootloader的设计与实现,涵盖其多协议支持(XCP、CCP、UDS)、AUTOSAR兼容性、多版本选择(ILLD和MCAL)、广泛硬件平台支持(如TC系列芯片)以及CAN FD的支持。文中不仅提供了上位机和下位机的代码示例,还展示了具体的测试用例,确保Bootloader的功能正确性和稳定性。此外,文章探讨了Bootloader在汽车电子和工业控制系统中的应用场景,强调了其重要性和灵活性。 适合人群:从事汽车电子、嵌入式系统开发的技术人员,尤其是那些需要深入了解Bootloader工作机制和实现细节的人群。 使用场景及目标:适用于需要开发或维护汽车电子控制单元(ECU)的团队,旨在提高系统的可靠性和性能。目标包括但不限于:实现高效的数据传输、确保诊断服务的准确性、优化刷写速度、增强系统的安全性等。 其他说明:文章提供了丰富的代码示例和技术细节,帮助读者更好地理解和应用基于UDS的Bootloader。同时,针对不同硬件平台和应用场景,给出了具体的配置建议和注意事项。

    esp32串口接收tcp发送代码

    esp32串口接收tcp发送代码

    少儿编程scratch项目源代码文件案例素材-蝗虫群怪 Boss 战.zip

    少儿编程scratch项目源代码文件案例素材-蝗虫群怪 Boss 战.zip

    少儿编程scratch项目源代码文件案例素材-放射性南瓜田.zip

    少儿编程scratch项目源代码文件案例素材-放射性南瓜田.zip

    少儿编程scratch项目源代码文件案例素材-格林奇 Boss 大战.zip

    少儿编程scratch项目源代码文件案例素材-格林奇 Boss 大战.zip

    Rust泛型编程实战:编写类型安全的通用算法库.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!

    MATLAB仿真下的QPSK信号在AWGN信道中的误符号率与误比特率分析

    内容概要:本文详细介绍了使用MATLAB进行QPSK调制信号通过AWGN信道的误符号率(SER)和误比特率(BER)性能分析的方法。主要内容包括参数设置、随机比特流生成、Gray编码映射、AWGN信道建模、噪声功率计算、解调过程以及误码率统计。文中还讨论了一些常见的实现陷阱和技术细节,如Gray编码的正确实现、噪声方差的计算方法、信噪比转换等。通过仿真与理论值对比,展示了QPSK调制在不同信噪比下的性能表现。 适合人群:通信工程专业学生、通信系统开发者、MATLAB爱好者。 使用场景及目标:适用于希望深入了解QPSK调制原理及其在AWGN信道下的性能分析的研究人员和工程师。通过动手实践,可以掌握QPSK调制的基本原理、MATLAB编程技巧以及通信系统的性能评估方法。 其他说明:文中提供了详细的MATLAB代码片段,帮助读者更好地理解和实现QPSK调制的性能分析。此外,还提到了一些优化建议,如增加仿真次数以提高低信噪比区域的精度。

    六轴EtherCAT总线伺服涂布收卷机程序:动态测量与变频器同步控制

    内容概要:本文详细介绍了六轴EtherCAT总线伺服涂布收卷机程序的实现过程。该系统通过六个伺服电机、变频器和编码器的配合,实现了动态测量频率、转速计算、频率换算与速度同步以及通讯控制等功能。文中提供了具体的代码示例,如Python、C/C++和ST语言代码片段,用于解释如何进行频率测量、转速换算、变频器频率设置和EtherCAT通讯控制。此外,还讨论了实际应用中的常见问题及其解决方案,如通讯延迟处理、异常处理和参数配置等。 适合人群:从事工业自动化控制领域的工程师和技术人员,尤其是对EtherCAT总线技术和伺服控制系统有一定了解的人群。 使用场景及目标:适用于需要高精度同步控制的工业应用场景,如涂布工艺和收卷环节。目标是帮助读者理解和实现六轴EtherCAT总线伺服涂布收卷机系统的协同工作,提高生产效率和稳定性。 其他说明:文章不仅提供了详细的代码实现,还分享了许多实际调试经验和技巧,有助于读者更好地应对实际工程中的挑战。

Global site tag (gtag.js) - Google Analytics