`
a3mao
  • 浏览: 562918 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

flex中AdvancedDataGrid列上的itemRenderer

    博客分类:
  • Flex
阅读更多
需求:一个表格,在点击一个“添加”按钮时要动态的增加一行,且有下拉列表功能。

主文件:GridView.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:GridItem xmlns:mx="http://www.adobe.com/2006/mxml"
			 width="98%"
			 height="200"
			 xmlns:mate="http://mate.asfusion.com/"
			 xmlns:views="com.fisci.asia.fnt.view.*"
			 xmlns:components="com.hillelcoren.components.*" 
			 backgroundColor="#FBF888" 
			>

	<mx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.events.FlexEvent;
			import mx.controls.listClasses.*;
			
			[Bindable]
			public var ftType:String = "EFT";//EFT or AFT
			
			[Bindable]
			public var fntGridDataArrColl:ArrayCollection = new ArrayCollection();
			
			
			private function completeControl(evt:FlexEvent):void
			{
				//ren.cataGoryId.dataProvider = ren.cataGoryDpArrColl;
				//var ren:GridColumnRenderer =GridColumnRenderer( ClassFactory(adaGridColCataGoryId.itemRenderer).newInstance());
				///Alert.show("gridItemColRenderer="+ren.cataGoryId);
			//parentDocument.init(evt)
			
			}
		
			public function init(evt:FlexEvent):void
			{
				///obj.
				//AdvancedDataGridColumn(this.fntEFTGrid.getChildAt(2))
				//fntEFTGrid.AdvancedListBaseContentHolder141.GridColumnRenderer178.cataGoryId
				//Alert.show("called by gridColumn="+(AdvancedListBaseContentHolder(this.fntEFTGrid.getChildAt(2))));
				var ren:GridColumnRenderer =GridColumnRenderer( ClassFactory(adaGridColCataGoryId.itemRenderer).newInstance());
				ren.roGridCol.getCataGory();
			}
			
			private function addFntColumn(event:MouseEvent):void
			{ 
				var obj:Object = new Object();
				obj.FNT_TRADE_ID = "";
				obj.AMOUNT = 0.00;
				obj.FNT_TRANS_TYPE = "";
				fntGridDataArrColl.addItem(obj);
				fntEFTGrid.dataProvider = fntGridDataArrColl;
				
				//
				//var ren:GridColumnRenderer =GridColumnRenderer( ClassFactory(adaGridColCataGoryId.itemRenderer).newInstance());
				//Alert.show("gridItemColRenderer="+ren.cataGoryId);
			}
			
			public function myStyleFunc(data:Object,col:AdvancedDataGridColumn):Object
			{
				return {color:'black'};
			}

			//myADG.invalidateList(); 刷新表格
			


		]]>
	</mx:Script>
	
	<mx:VBox top="5"
			 paddingTop="8"
			 paddingLeft="10"
			 paddingBottom="8"
			 width="98%">
		<mx:Button label="{resourceManager.getString('resources','fnt.fntGridView.add.button')}"
				   click="addFntColumn(event)"/>
		<mx:AdvancedDataGrid id="fntEFTGrid"  dataProvider="{fntGridDataArrColl}"  
			width="98%" editable="true" styleFunction="myStyleFunc">
		
			<mx:columns><!--这里是设定列标题-->
				<mx:AdvancedDataGridColumn dataField="FNT_TRADE_ID"  editable="false"
					headerText="{resourceManager.getString('resources','fnt.fntGridView.cell.fntTradeId')}"/>
				<mx:AdvancedDataGridColumn dataField="AMOUNT"  editable="true"
					headerText="{resourceManager.getString('resources','fnt.fntGridView.cell.amount')}"/>
				<mx:AdvancedDataGridColumn dataField="FNT_TRANS_TYPE" editable="true"  id="adaGridColCataGoryId" 
					headerText="{resourceManager.getString('resources','fnt.fntGridView.cell.catagory')}" 
				   itemRenderer="{new ClassFactory(GridColumnRenderer)}"> 
					
				</mx:AdvancedDataGridColumn>	
			</mx:columns>
		</mx:AdvancedDataGrid>
	</mx:VBox>
</mx:GridItem>


itemRenderer文件GridColumnRenderer.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"  width="250"
	xmlns:components="com.hillelcoren.components.*"
	  initialize="init(event)">
	<mx:Script>
		<![CDATA[
		import mx.events.MenuEvent;
		import mx.controls.Alert;
		import com.fisci.asia.common.Constants;
		import mx.rpc.events.FaultEvent;
		import mx.rpc.events.ResultEvent;
		import mx.collections.ArrayCollection;
		import mx.events.FlexEvent;
		
		[Bindable]								
		public var text:String = "";
		[Bindable]
		public var code:String = "code";
		[Bindable]
		public var browserFieldsArry:Array = Constants.BROWSER_FIELDS_ARRY;
		
		[Bindable]
	    public var cataGoryDpArrColl:ArrayCollection = new ArrayCollection();
			
		private function completeControl(evt:FlexEvent):void
		{
			//this.cataGoryId.dataProvider = cataGoryDpArrColl;
			//Alert.show("gridItemColRenderer="+this.cataGoryId.dataProvider.length);
			
			//parentDocument.init(evt)
			
		}
		
		public function init(evt:FlexEvent):void
			{
				///obj.
				//AdvancedDataGridColumn(this.fntEFTGrid.getChildAt(2))
				//fntEFTGrid.AdvancedListBaseContentHolder141.GridColumnRenderer178.cataGoryId
				//Alert.show("called by gridColumn="+(AdvancedListBaseContentHolder(this.fntEFTGrid.getChildAt(2))));
				//var ren:GridColumnRenderer =GridColumnRenderer( ClassFactory(adaGridColCataGoryId.itemRenderer).newInstance());
				//Alert.show("length="+(cataGoryDpArrColl.length));
				if(cataGoryDpArrColl!=null && cataGoryDpArrColl.length == 0)
				  roGridCol.getCataGory();
				//Alert.show("dd="+ ren.cataGoryId );
			}	
		private function handleItemClick(event:MenuEvent):void
		{
			switch (String(event.item.@data))
			{
				case "browse":
					//Alert.show("at="+event.currentTarget);
					//Alert.show("cataCGory="+this.cataGoryDpArrColl);
					this.cataGoryId.dataProvider = this.cataGoryDpArrColl;
					cataGoryId.showBrowser();
				    break;
				case "remove":
					cataGoryId.selectedItems.removeAll();
					break;		
			}
		}
		

		
		private function handleResult(event:ResultEvent):void
		{
			cataGoryDpArrColl = event.result as ArrayCollection;
			//Alert.show("gridItemColRenderer="+cataGoryDpArrColl.length);
		}
			
		private function handleFault(e:FaultEvent):void
		{
			Alert.show(String(e.fault.message), "错误");
		}
			
		]]>
	</mx:Script>
	
	<mx:XML format="e4x" id="menuData">
		<root>
			<menuitem data="browse" label="browse"/>
			<menuitem data="remove" label="removeall"/>
		</root>
	</mx:XML>
	
	<mx:RemoteObject id="roGridCol" destination="bankAcctManager" 
		result="handleResult(event)" fault="handleFault(event)" showBusyCursor="true">
    </mx:RemoteObject>	
    
	<components:AdvancedAutoComplete id="cataGoryId" width="250" visible="true" includeInLayout="true"  
        itemClick="handleItemClick(event)"
        actionsMenuDataProvider="{menuData}" 
        matchType="anyPart"  
        text="{text}"
        labelField="{code}"
        browserFields="{browserFieldsArry}"
		allowMultipleSelection="false" 
		selectionLayout="horizontal" />
                        		
</mx:HBox>



分享到:
评论

相关推荐

    Flex技术中AdvancedDataGrid使用方法

    ### Flex技术中AdvancedDataGrid使用方法 #### 一、多列排序 在默认情况下,`AdvancedDataGrid`组件会按照数据被添加至其`DataProvider`的顺序来展示数据。与`DataGrid`组件类似,`AdvancedDataGrid`也支持用户在...

    flex advancedDataGrid 中如何实现带checkbox的树

    综上所述,实现Flex AdvancedDataGrid中带复选框的树形结构涉及数据模型的设计、HierarchicalData的使用、AdvancedDataGrid的配置以及事件处理等多个方面。通过灵活应用这些技术,我们可以创建出功能强大且易于操作...

    flex-datagrid-advancedDataGrid-demo

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

    flex导出excel的代码

    &lt;![CDATA[ import mx.controls.CheckBox; import mx.controls.Alert; ... Alert.show("行的数据分别是:"+o.idx+"/"+o.... &lt;/mx:itemRenderer&gt; &lt;/mx:DataGridColumn&gt; &lt;/mx:WindowedApplication&gt;

    flex 合并单元格

    总之,Flex中的单元格合并是通过数据提供器的配置、AdvancedDataGrid的属性设置以及可能的自定义ItemRenderer实现的。了解这些原理和技巧,你可以在Flex应用程序中创建更复杂的用户界面,以满足不同的数据展示需求。...

    AdvancedDataGrid综合应用

    综上所述,AdvancedDataGrid在Flex开发中是一个强大的工具,它的强大功能和灵活性使得数据的展示和操作变得更为便捷和高效。通过深入学习和实践,开发者可以充分利用这个组件,为用户提供更优质的用户体验。

    Flex中DataGrid和其它控件使用

    总结来说,Flex中的DataGrid和AdvancedDataGrid是强大且灵活的数据展示工具,它们可以与其他多种控件协同工作,满足各种复杂的数据展示和交互需求。理解和掌握这些知识点,将有助于构建高效、用户友好的Flex应用程序...

    AdvancedDataGrid 对sdk3.5不支持,对3.2支持方案(合并单元格)

    在Flex开发中,AdvancedDataGrid组件是一个强大的数据网格控件,它提供了丰富的功能,如分组、排序、过滤以及自定义列渲染等。然而,针对Adobe Flex SDK 3.5版本,AdvancedDataGrid存在一些兼容性问题,这使得在该...

    itemrenderer help

    在Flex中,为了展示大量数据,提供了多种控制组件,如List、DataGrid、Tree以及包括图表在内的可视化类(如AdvancedDataGrid)。默认情况下,这些列表控件仅以简单文本的形式显示所给的数据。然而,Flex的功能远不止...

    表格演示(1)AdvancedDataGrid应用

    AdvancedDataGrid是Flex框架中一个强大的组件,它专为处理大量复杂数据而设计,常用于企业级应用的表格展示。 在Flex开发中,AdvancedDataGrid相比普通的DataGrid,提供了更丰富的功能和更高级的定制能力。它支持多...

    flex中dataGrid全选和全不选功能

    在Flex框架中,DataGrid是用于展示数据列表的常用组件之一。它提供了丰富的特性来处理数据,包括排序、过滤和自定义渲染等。而在实际应用中,全选和全不选功能是数据列表中常见的需求,尤其是在需要批量操作场景下。...

    DataGrid和AdvancedDataGrid CheckBox全选功能1.1

    在本文中,我们将深入探讨如何在Flex中实现DataGrid和AdvancedDataGrid组件的CheckBox全选功能。这个功能在数据展示和交互式操作中非常常见,它允许用户通过一个主CheckBox来选择或取消选择所有行数据。 首先,我们...

    flex datagrid 改变

    7. **模板组件**:使用ItemRenderer或AdvancedDataGrid的ItemRenderer,可以自定义每个数据项的显示方式。 在提供的文件列表中,有一个名为“ChooseGoods.mxml”的文件。这很可能是一个MXML文件,它是Flex中用XML...

    Flex DataGrid checkBox

    在Flex编程中,DataGrid组件是用于展示数据集的一个强大工具,它允许用户以表格的形式查看和操作数据。在DataGrid中集成CheckBox复选框功能,可以为用户提供一种直观的方式来选择或选择多个条目,这对于数据筛选、...

    怎样在flex的datagrid中运用checkbox

    在Flex开发中,数据网格(DataGrid)是一种常用的组件,用于展示和操作表格形式的数据。在实际应用中,我们经常需要在DataGrid的列中添加复选框(Checkbox),以便用户能够进行多选操作,例如全选和单选。本文将深入...

    使用DataGrid中扩展ItemRenderer和HeaderRenderer进行操作

    在Flex中,这个功能通过扩展ItemRenderer和HeaderRenderer来实现。本文将详细讨论如何扩展这些渲染器以及如何通过编程方式操作DataGrid。 首先,ItemRenderer是一个接口,它允许开发者定义数据在DataGrid中显示的...

    datagrid 合并单元格

    例如,当同一列中有重复的值时,可以将这些行的单元格合并,以减少冗余信息,使表格更加整洁。在datagrid中,合并单元格通常是通过特定的属性或方法来实现的。 首先,我们来看一下`AdvancedDataGrid`。这是Flex或...

    flex的tree动态加载大量数据与滚动条相关问题探讨

    Flex框架对此提供了一定的优化机制,官方明确指出使用ItemRenderer的大数据控件,并不会一次创建所有数据列/行的显示对象。也就是说,Tree组件仅会创建在屏幕上可见的数据列/行,并且重复利用这些显示对象以提升运行...

Global site tag (gtag.js) - Google Analytics