需求:一个表格,在点击一个“添加”按钮时要动态的增加一行,且有下拉列表功能。
主文件: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使用方法 #### 一、多列排序 在默认情况下,`AdvancedDataGrid`组件会按照数据被添加至其`DataProvider`的顺序来展示数据。与`DataGrid`组件类似,`AdvancedDataGrid`也支持用户在...
综上所述,实现Flex AdvancedDataGrid中带复选框的树形结构涉及数据模型的设计、HierarchicalData的使用、AdvancedDataGrid的配置以及事件处理等多个方面。通过灵活应用这些技术,我们可以创建出功能强大且易于操作...
本示例"flex-datagrid-advancedDataGrid-demo"显然是为了演示如何在Flex应用中有效地使用这两种数据网格控件。 首先,DataGrid是最基础的数据展示组件,它允许开发者以表格的形式展示数据,支持排序、选择和编辑等...
<![CDATA[ import mx.controls.CheckBox; import mx.controls.Alert; ... Alert.show("行的数据分别是:"+o.idx+"/"+o.... </mx:itemRenderer> </mx:DataGridColumn> </mx:WindowedApplication>
总之,Flex中的单元格合并是通过数据提供器的配置、AdvancedDataGrid的属性设置以及可能的自定义ItemRenderer实现的。了解这些原理和技巧,你可以在Flex应用程序中创建更复杂的用户界面,以满足不同的数据展示需求。...
综上所述,AdvancedDataGrid在Flex开发中是一个强大的工具,它的强大功能和灵活性使得数据的展示和操作变得更为便捷和高效。通过深入学习和实践,开发者可以充分利用这个组件,为用户提供更优质的用户体验。
总结来说,Flex中的DataGrid和AdvancedDataGrid是强大且灵活的数据展示工具,它们可以与其他多种控件协同工作,满足各种复杂的数据展示和交互需求。理解和掌握这些知识点,将有助于构建高效、用户友好的Flex应用程序...
在Flex开发中,AdvancedDataGrid组件是一个强大的数据网格控件,它提供了丰富的功能,如分组、排序、过滤以及自定义列渲染等。然而,针对Adobe Flex SDK 3.5版本,AdvancedDataGrid存在一些兼容性问题,这使得在该...
在Flex中,为了展示大量数据,提供了多种控制组件,如List、DataGrid、Tree以及包括图表在内的可视化类(如AdvancedDataGrid)。默认情况下,这些列表控件仅以简单文本的形式显示所给的数据。然而,Flex的功能远不止...
AdvancedDataGrid是Flex框架中一个强大的组件,它专为处理大量复杂数据而设计,常用于企业级应用的表格展示。 在Flex开发中,AdvancedDataGrid相比普通的DataGrid,提供了更丰富的功能和更高级的定制能力。它支持多...
在Flex框架中,DataGrid是用于展示数据列表的常用组件之一。它提供了丰富的特性来处理数据,包括排序、过滤和自定义渲染等。而在实际应用中,全选和全不选功能是数据列表中常见的需求,尤其是在需要批量操作场景下。...
在本文中,我们将深入探讨如何在Flex中实现DataGrid和AdvancedDataGrid组件的CheckBox全选功能。这个功能在数据展示和交互式操作中非常常见,它允许用户通过一个主CheckBox来选择或取消选择所有行数据。 首先,我们...
7. **模板组件**:使用ItemRenderer或AdvancedDataGrid的ItemRenderer,可以自定义每个数据项的显示方式。 在提供的文件列表中,有一个名为“ChooseGoods.mxml”的文件。这很可能是一个MXML文件,它是Flex中用XML...
在Flex编程中,DataGrid组件是用于展示数据集的一个强大工具,它允许用户以表格的形式查看和操作数据。在DataGrid中集成CheckBox复选框功能,可以为用户提供一种直观的方式来选择或选择多个条目,这对于数据筛选、...
在Flex开发中,数据网格(DataGrid)是一种常用的组件,用于展示和操作表格形式的数据。在实际应用中,我们经常需要在DataGrid的列中添加复选框(Checkbox),以便用户能够进行多选操作,例如全选和单选。本文将深入...
在Flex中,这个功能通过扩展ItemRenderer和HeaderRenderer来实现。本文将详细讨论如何扩展这些渲染器以及如何通过编程方式操作DataGrid。 首先,ItemRenderer是一个接口,它允许开发者定义数据在DataGrid中显示的...
例如,当同一列中有重复的值时,可以将这些行的单元格合并,以减少冗余信息,使表格更加整洁。在datagrid中,合并单元格通常是通过特定的属性或方法来实现的。 首先,我们来看一下`AdvancedDataGrid`。这是Flex或...
Flex框架对此提供了一定的优化机制,官方明确指出使用ItemRenderer的大数据控件,并不会一次创建所有数据列/行的显示对象。也就是说,Tree组件仅会创建在屏幕上可见的数据列/行,并且重复利用这些显示对象以提升运行...