Flex 自定义DataGrid控件

新建一个Flex Library Project项目,
新建一个MXML Component的文件,名字么就觉customdatagrid,flex的代码像java,也像javascrpt,可以自己去看看
 1Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念<?xml version="1.0" encoding="utf-8"?>
 2Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300" xmlns:mydg="*">
 3Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    <mx:Script>
 4Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <![CDATA[
 5Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        /**//*
 6Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            自定义datagrid控件元素
 7Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            总共的页数
 8Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            当前页面的页码
 9Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            所有的记录数
10Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            当前也的记录
11Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            没有翻页的记录
12Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            
13Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        */
14Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            import mx.collections.ArrayCollection;
15Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            [Bindable]
16Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            private var mypagedata:ArrayCollection = new ArrayCollection();//当前也没种该显示的记录
17Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            [Bindable]
18Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            public var mygridcolumns:Array;
19Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            public var mydata:ArrayCollection;//所有的数据
20Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            public var pagecount:int=10;//表示每页记录的条数,默认10条,可以由用户自行定义
21Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            public var curpage:int;//当前的页码
22Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            public var totalpage:int;//一共的页数
23Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            public var totalcount:int;//一共的记录条数
24Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            
25Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            public function initdata(value:ArrayCollection):void
26Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念{
27Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                mydata = value;//将所有数据都赋值给mydata变量
28Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                mypagedata.removeAll();//移出当前页面中所有数据记录
29Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                
30Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                if(mydata.length>0 && null!=mydata)
31Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念{
32Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    totalcount = mydata.length;
33Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    totalpage = (totalcount + pagecount - 1) / pagecount;
34Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    setPager(0);
35Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    inputpage.minimum=1;
36Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    inputpage.maximum=totalpage;
37Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                }elseFlex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念{
38Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    totalcount = 0;
39Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    totalpage = 0;
40Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    curpage = 0;
41Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                     inputpage.minimum = 0;
42Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                     inputpage.maximum = 0;
43Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    pagedetail.text = "第0页/共0页   共0条纪录";
44Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                }
45Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            }
46Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            public function setPager(value:int):void
47Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念{
48Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                if(value<0 || value>totalpage) return;
49Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                curpage = value;
50Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                var curNum:int = value*pagecount;//计算出要跳转到的页面种的第一条记录在所有的记录种是第几条记录
51Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                mypagedata.removeAll();//移出变量中的数据,以便插入新数据,页面中显示的是这个变量中的数据
52Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                for(var i:int=0;curNum<mydata.length&&i<pagecount;i++,curNum++)
53Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                //循环的次数既要小于所有的记录数,也要小于每个页面能显示的记录数;并且curNum变量中的值也要增加
54Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念{
55Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    mypagedata.addItem(mydata.getItemAt(curNum));//依次抽取记录
56Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                }
57Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                var temp:int = curpage+1;//页码中第一张页面是0,也就是说实际显示的页码是+1后的值
58Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                pagedetail.text = "第"+temp+"页/共"+totalpage+"页   共条"+totalcount+"记录";
59Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            }
60Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        ]]>
61Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    </mx:Script>
62Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    
63Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    <mx:DataGrid id="cudg" dataProvider="{mypagedata}"  
64Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        columns="{mygridcolumns}" width="100%" height="100%">
65Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    </mx:DataGrid>
66Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    <mx:HBox width="100%" horizontalAlign="left" verticalAlign="middle">
67Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <!--<mx:LinkButton label="全选"/>
68Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <mx:LinkButton label="全不选"/>-->
69Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <mx:Spacer width="100%" height="1"></mx:Spacer>
70Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <mx:Label text="第0页/共0页" id="pagedetail"/>
71Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <mx:LinkButton label="首页" click="setPager(0)"/>
72Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <mx:LinkButton label="上一页" click="setPager(curpage-1)"/>
73Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <mx:LinkButton label="下一页" click="setPager(curpage+1)"/>
74Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <mx:LinkButton label="末页" click="setPager(totalpage-1)"/>
75Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <mx:NumericStepper id="inputpage" stepSize="1" minimum="0" maximum="0" cornerRadius="0"/>
76Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <mx:LinkButton label="跳转" click="setPager(inputpage.value-1)"/>
77Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    </mx:HBox>
78Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念</mx:VBox>
79Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念
以上是自定义控件的代码,下面是使用这个控件的代码
新建一个Flex Project项目
新建一个MXML Application文件,名字就叫MyDataGrid吧
需在项目中将刚刚编写的Flex Library Project 导入到这个项目中的Library path中
 1Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念<?xml version="1.0" encoding="utf-8"?>
 2Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:nsl="*"  creationComplete="init()">
 3Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    <mx:Script>
 4Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <![CDATA[
 5Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            import mx.collections.ArrayCollection;
 6Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            public var items:ArrayCollection;
 7Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            private function init():void
 8Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念{
 9Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                items = new  ArrayCollection();
10Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                for(var i:int =1;i<16;i++)
11Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念{
12Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    var obj:Object = new Object();
13Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    obj.loginaccount = "andy";
14Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    obj.name = "Andy";
15Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    obj.loginaccount += i;
16Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    obj.name += i;
17Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                    items.addItem(obj);
18Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                }
19Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                
20Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                mydg.initdata(items);
21Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            }
22Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            
23Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        ]]>
24Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    </mx:Script>
25Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <mx:Panel id="panel1" title="MyDataGrid">
26Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        <nsl:customgrid width="100%" height="100%" id="mydg">
27Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            <nsl:mygridcolumns>
28Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                <mx:DataGridColumn headerText="登录名" dataField="loginaccount" width="200"/>
29Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念                <mx:DataGridColumn headerText="姓名" dataField="name" width="200"/>
30Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念            </nsl:mygridcolumns>
31Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念        </nsl:customgrid>
32Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    </mx:Panel>
33Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念    
34Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念</mx:Application>
35Flex 自定义DataGrid控件 - secyaher - 隐龙 为了一生的信念
编译运行吧.
效果:http://www.blogjava.net/images/blogjava_net/louieling/CustoumGrid.swf

原文地址:https://www.cnblogs.com/mount/p/2247792.html