Flex 利用Grid制作复杂表格
发布时间:2020-12-15 04:11:51 所属栏目:百科 来源:网络整理
导读:在Flex项目中,需要制作一个比较麻烦的表格来显示数据,废话不多说,看代码。 思路:1、利用Grid来拼成表格,通过合并单元格来实现。 ??????????? 2、数据源利用Repeater 来动态读取 ??????????? 3、数据源可以使集合也可以是XML,这里用的是集合,但XML方法
在Flex项目中,需要制作一个比较麻烦的表格来显示数据,废话不多说,看代码。 思路:1、利用Grid来拼成表格,通过合并单元格来实现。 ??????????? 2、数据源利用Repeater 来动态读取 ??????????? 3、数据源可以使集合也可以是XML,这里用的是集合,但XML方法也写了, 源代码: <?xml version="1.0" encoding="utf-8"?> <!--停车位全局使用效率统计--> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" ?? ??? ? xmlns:s="library://ns.adobe.com/flex/spark" ?? ??? ? xmlns:mx="library://ns.adobe.com/flex/mx" ?? ??? ? width="100%" ?? ??? ? height="100%" ?? ??? ? creationComplete="onGreat()" ?? ??? ? xmlns:statistical="cn.com.statistical.*" ?? ??? ? xmlns:common="cn.com.common.*" ?? ??? ? xmlns:grow="cn.com.statistical.grow.*"> ?? ?<s:layout> ?? ??? ?<s:VerticalLayout gap="0" ?? ??? ??? ??? ??? ??? ?? paddingBottom="30" ?? ??? ??? ??? ??? ??? ?? paddingLeft="30" ?? ??? ??? ??? ??? ??? ?? paddingRight="30" ?? ??? ??? ??? ??? ??? ?? paddingTop="30"/> ?? ?</s:layout> ?? ?<fx:Script> ?? ??? ?<![CDATA[ ?? ??? ??? ?import mx.collections.ArrayCollection; ?? ??? ??? ?import mx.collections.XMLListCollection; ?? ??? ??? ?import mx.controls.Alert; ?? ??? ??? ?import mx.events.CollectionEvent; ?? ??? ??? ?import mx.events.FlexEvent; ?? ??? ??? ?import mx.managers.PopUpManager; ?? ??? ??? ?import mx.printing.FlexPrintJob; ?? ??? ??? ?[Bindable] ?? ??? ??? ?public var gridTitle:String; ?? ??? ??? ?[Bindable] ?? ??? ??? ?public var orgName:String; ?? ??? ??? ?[Bindable] ?? ??? ??? ?public var date:String; ?? ??? ??? ?[Bindable] ?? ??? ??? ?public var i:int=1; ?? ??? ??? ?[Bindable] ?? ??? ??? ?public var bustrainingqualityXLC:XMLListCollection; ?? ??? ??? ?[Bindable] ?? ??? ??? ?public var sumXML:XML; ?? ??? ??? ?[Bindable] ?? ??? ??? ?public var xml:XML; ?? ??? ??? ?//统计范围 ?? ??? ??? ?[Bindable] ?? ??? ??? ?private var rangeArr:ArrayCollection=new ArrayCollection([{label: "北京"}]); ?? ??? ??? ?//统计结果集 ?? ??? ??? ?[Bindable] ?? ??? ??? ?private var resultArr:ArrayCollection=new ArrayCollection([{name: "海淀区域2",tccNum: "2",tcwNum: "400",tcwsyNum: "388",tcwkxNum: "12",summary: "97"},{name: "丰台区域2",tccNum: "3",tcwNum: "300",tcwsyNum: "278",tcwkxNum: "22",summary: "92"},{name: "机场区域2",tccNum: "1",tcwNum: "100",tcwsyNum: "68",tcwkxNum: "32",summary: "68"}]); ?? ??? ??? ?//统计小计结果集 ?? ??? ??? ?[Bindable] ?? ??? ??? ?private var objArr:Object=new Object(); ?? ??? ??? ?[Bindable] ?? ??? ??? ?private var arr:Array=new Array({tccSum: "6",tcwSum: "800",tcwsySum: "734",tcwkxSum: "66",summary: "89"}); ?? ??? ??? ?private function onGreat():void ?? ??? ??? ?{ ?? ??? ??? ??? ?//?? ?loaderXML(); ?? ??? ??? ?} ?? ??? ??? ?/** ?? ??? ??? ? * 加载信息编辑配置文件,并加载到的XML付给Tree ?? ??? ??? ? * **/ ?? ??? ??? ?private function loaderXML():void ?? ??? ??? ?{ ?? ??? ??? ??? ?var url:String="cn/com/statistical/xml/parkXml.xml"; ?? ??? ??? ??? ?var ul:URLLoader=new URLLoader(); ?? ??? ??? ??? ?ul.load(new URLRequest(url)); ?? ??? ??? ??? ?ul.addEventListener(Event.COMPLETE,readyLoad); ?? ??? ??? ?} ?? ??? ??? ?private function readyLoad(event:Event):void ?? ??? ??? ?{ ?? ??? ??? ??? ?var children:XML=XML(event.target.data); ?? ??? ??? ??? ?sumXML=children; ?? ??? ??? ??? ?//?? ?var list:XMLList=Model.getModel(ModelBustrainingquality).datasource.source; ?? ??? ??? ??? ?//?? ?sumXML=XML(list[0]).copy(); ?? ??? ??? ??? ?bustrainingqualityXLC=new XMLListCollection(sumXML.child("list").children()); ?? ??? ??? ?} ?? ??? ??? ?private function onInit():void ?? ??? ??? ?{ ?? ??? ??? ??? ?//监听数据源 ?? ??? ??? ?} ?? ??? ?]]> ?? ?</fx:Script> ?? ?<fx:Declarations> ?? ??? ?<!-- 将非可视元素(例如服务、值对象)放在此处 --> ?? ?</fx:Declarations> ?? ?<mx:VBox width="100%" ?? ??? ??? ? id="test"> ?? ??? ?<s:BorderContainer width="100%" ?? ??? ??? ??? ??? ??? ??? height="30"> ?? ??? ??? ?<s:layout> ?? ??? ??? ??? ?<s:HorizontalLayout/> ?? ??? ??? ?</s:layout> ?? ??? ??? ?<s:HGroup width="100%" ?? ??? ??? ??? ??? ?? height="30" ?? ??? ??? ??? ??? ?? horizontalAlign="center" ?? ??? ??? ??? ??? ?? verticalAlign="middle"> ?? ??? ??? ??? ?<s:Label text="统计范围:"/> ?? ??? ??? ??? ?<s:ComboBox selectedIndex="0" ?? ??? ??? ??? ??? ??? ??? ?labelField="label" ?? ??? ??? ??? ??? ??? ??? ?dataProvider="{rangeArr}"/> ?? ??? ??? ??? ?<s:Label text="统计时间:"/> ?? ??? ??? ??? ?<common:ControlDataTime id="datatimeID"/> ?? ??? ??? ??? ?<s:Button label="查询"/> ?? ??? ??? ?</s:HGroup> ?? ??? ?</s:BorderContainer> ?? ??? ?<mx:Grid width="100%" ?? ??? ??? ??? ? height="100%" ?? ??? ??? ??? ? verticalGap="0" ?? ??? ??? ??? ? horizontalGap="0" ?? ??? ??? ??? ? borderStyle="solid"> ?? ??? ??? ?<mx:GridRow width="100%" ?? ??? ??? ??? ??? ??? ?borderStyle="solid"> ?? ??? ??? ??? ?<mx:GridItem colSpan="25" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? height="40" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ??? ??? ?<mx:Label text="停车位全局使用效率统计分析" ?? ??? ??? ??? ??? ??? ??? ?? fontSize="15" ?? ??? ??? ??? ??? ??? ??? ?? fontWeight="bold"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ?</mx:GridRow> ?? ??? ??? ?<mx:GridRow borderStyle="solid" ?? ??? ??? ??? ??? ??? ?width="100%" ?? ??? ??? ??? ??? ??? ?height="30"> ?? ??? ??? ??? ?<mx:GridItem width="100%" ?? ??? ??? ??? ??? ??? ??? ? height="100%" ?? ??? ??? ??? ??? ??? ??? ? colSpan="25" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle"> ?? ??? ??? ??? ??? ?<mx:Label text="统计范围:"/> ?? ??? ??? ??? ??? ?<mx:Label text="北京"/> ?? ??? ??? ??? ??? ?<mx:Spacer width="100%"/> ?? ??? ??? ??? ??? ?<mx:Label text="统计时间:"/> ?? ??? ??? ??? ??? ?<mx:Label text="2013-07-22 10:00"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ?</mx:GridRow> ?? ??? ??? ?<mx:GridRow height="40" ?? ??? ??? ??? ??? ??? ?width="100%" ?? ??? ??? ??? ??? ??? ?fontWeight="bold" ?? ??? ??? ??? ??? ??? ?verticalAlign="middle"> ?? ??? ??? ??? ?<mx:GridItem colSpan="2" ?? ??? ??? ??? ??? ??? ??? ? borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ??? ??? ?<mx:Label text="序号"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem colSpan="4" ?? ??? ??? ??? ??? ??? ??? ? borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ??? ??? ?<mx:Label text="区域名称"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center" ?? ??? ??? ??? ??? ??? ??? ? colSpan="4"> ?? ??? ??? ??? ??? ?<mx:Label text="停车场数量"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? colSpan="4" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ??? ??? ?<mx:Label text="停车位数量"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center" ?? ??? ??? ??? ??? ??? ??? ? colSpan="4"> ?? ??? ??? ??? ??? ?<mx:Label text="停车位使用数量"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center" ?? ??? ??? ??? ??? ??? ??? ? colSpan="4"> ?? ??? ??? ??? ??? ?<mx:Label text="停车位空闲数量"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center" ?? ??? ??? ??? ??? ??? ??? ? colSpan="3"> ?? ??? ??? ??? ??? ?<mx:Label text="使用效率(%)"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ?</mx:GridRow> ?? ??? ??? ?<mx:Repeater id="list" ?? ??? ??? ??? ??? ??? ? width="100%" ?? ??? ??? ??? ??? ??? ? height="100%" ?? ??? ??? ??? ??? ??? ? dataProvider="{resultArr}"> ?? ??? ??? ??? ?<grow:GRow_Overall_Result width="100%" ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? obj="{list.currentItem}" ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? i="{i++}"/> ?? ??? ??? ?</mx:Repeater> ?? ??? ??? ?<mx:GridRow height="40" ?? ??? ??? ??? ??? ??? ?width="100%" ?? ??? ??? ??? ??? ??? ?fontWeight="bold" ?? ??? ??? ??? ??? ??? ?verticalAlign="middle"> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? colSpan="6" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ??? ??? ?<mx:Label text="小计"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? colSpan="4" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ??? ??? ?<mx:Label text="{int(arr[0].tccSum)}"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? colSpan="4" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ??? ??? ?<mx:Label text="{int(arr[0].tcwSum)}"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? colSpan="4" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ??? ??? ?<mx:Label text="{int(arr[0].tcwsySum)}"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? colSpan="4" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ??? ??? ?<mx:Label text="{int(arr[0].tcwkxSum)}"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ??? ?<mx:GridItem borderStyle="solid" ?? ??? ??? ??? ??? ??? ??? ? colSpan="4" ?? ??? ??? ??? ??? ??? ??? ? verticalAlign="middle" ?? ??? ??? ??? ??? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ??? ??? ?<mx:Label text="{int(arr[0].summary)}"/> ?? ??? ??? ??? ?</mx:GridItem> ?? ??? ??? ?</mx:GridRow> ?? ??? ??? ?<mx:GridRow width="100%" ?? ??? ??? ??? ??? ??? ?horizontalAlign="left"> ?? ??? ??? ?</mx:GridRow> ?? ??? ?</mx:Grid> ?? ??? ?<mx:Spacer height="10"/> ?? ??? ?<!--?? ?<mx:HBox width="100%" ?? ??? ??? ? horizontalAlign="center"> ?? ??? ??? ? <mx:Button label="导出"/> ?? ??? ??? ? <mx:Spacer width="10"/> ?? ??? ??? ? <mx:Button label="打印"/> ?? ??? ??? ? </mx:HBox>--> ?? ?</mx:VBox> </s:Group> GRow_Overall_Result源码:其中,只要数据源和GRow_Overall_Result源码中的字段对应上,数据即可有多少显示多少 <?xml version="1.0" encoding="utf-8"?> <mx:GridRow creationComplete="onGreat()" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.controls.Alert; import mx.controls.Label; import mx.containers.GridItem; import mx.collections.ArrayCollection; [Bindable] public var obj:Object; [Bindable] public var i:int; private function onGreat():void { // Alert.show(obj.toString()); } ]]> </mx:Script> <mx:GridItem borderStyle="solid" horizontalAlign="center" colSpan="2"> <mx:Label text="{i}"/> </mx:GridItem> <mx:GridItem colSpan="4" horizontalAlign="center" borderStyle="solid"> <mx:Label text="{obj.name}"/> </mx:GridItem> <mx:GridItem colSpan="4" borderStyle="solid" horizontalAlign="center"> <mx:Label text="{obj.tccNum}"/> </mx:GridItem> <mx:GridItem borderStyle="solid" colSpan="4" horizontalAlign="center"> <mx:Label text="{obj.tcwNum}"/> </mx:GridItem> <mx:GridItem borderStyle="solid" colSpan="4" horizontalAlign="center"> <mx:Label text="{obj.tcwsyNum}"/> </mx:GridItem> <mx:GridItem borderStyle="solid" colSpan="4" horizontalAlign="center"> <mx:Label text="{obj.tcwkxNum}"/> </mx:GridItem> <mx:GridItem borderStyle="solid" horizontalAlign="center" colSpan="3"> <mx:Label text="{obj.summary}"/> </mx:GridItem> </mx:GridRow> XML文件数据源: <itemBustrainingquality> <list> <itemBustrainingquality> <qualityId>000001-c3203ec5ed407987</qualityId> <orgId> 1</orgId> <orgCode> 000001</orgCode> <Name>海淀区域</Name> <serialNumber>0</serialNumber> <year> 2013 </year> <tccNum> 2</tccNum> <tccNum> 400</tccNum> <tcwsyNum> 388 </tcwsyNum> <tcwkxNum> 12 </tcwkxNum> <summary> 97 </summary> </itemBustrainingquality> <itemBustrainingquality> <qualityId>000001-c3242231e1dc2716</qualityId> <orgId> 1 </orgId> <orgCode> 000001 </orgCode> <Name> 丰台区域 </Name> <serialNumber> 0 </serialNumber> <year> 2013 </year> <tccNum> 3 </tccNum> <tccNum> 300 </tccNum> <tcwsyNum> 278 </tcwsyNum> <tcwkxNum> 22 </tcwkxNum> <summary> 92.70 </summary> </itemBustrainingquality> <itemBustrainingquality> <qualityId> 000001-c3430d2c87d3a876 </qualityId> <orgId> 1 </orgId> <orgCode> 000001 </orgCode> <Name> 机场区域 </Name> <serialNumber> 0 </serialNumber> <year> 2013 </year> <qualityDate> 1373370518828 </qualityDate> <tccNum> 1 </tccNum> <tccNum> 100 </tccNum> <tcwsyNum> 68 </tcwsyNum> <tcwkxNum> 32 </tcwkxNum> <summary> 68 </summary> </itemBustrainingquality> </list> <foodOrgNumber> 6.0 </foodOrgNumber> <supplyCadre> 800.0 </supplyCadre> <supplySergeantA> 734.0 </supplySergeantA> <supplySergeantB> 66.0 </supplySergeantB> <supplySergeant> 89.20 </supplySergeant> </itemBustrainingquality> 如上代码即可实现下图的样式,如果需要源码,去下载吧!!!!!!!!!! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |