`

Flex 分页DataGrid

    博客分类:
  • FLEX
阅读更多
Java代码
  1. Local:Kelvin_LinkButton是我重写的一个LinkButton,换成mx: LinkButton即可.  
  2.   
  3.    
  4.   
  5. kelvin_DataGrid.mxml代码:  
  6.   
  7. <?xml version="1.0"  encoding= "utf-8" ?>  
  8.   
  9. <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"  width= "400"  height= "300"  xmlns:local= "*" >  
  10.   
  11.     <mx:Script>  
  12.   
  13.        <![CDATA[  
  14.   
  15.            /*分页DataGrid  
  16.  
  17.             by Kelvin 2008-02-24  
  18.  
  19.             MSN:xiaobolove@hotmail.com  
  20.  
  21.             Email:xiaobolove334421@163.com  
  22.  
  23.               
  24.  
  25.             因为是一次取出全部数据,所以适合数据量不会太大的情况。  
  26.  
  27.             加了一个pageSize,用来控制每页显示的行数,可以在调用这个组件的时候为pageSize属性赋值,  
  28.  
  29.             默认为每页显示10行数据,不需要为DataGrid指定高度。  
  30.  
  31.             参考 古刹飞鹰@E鹰创作室 的文章  
  32.  
  33.             */   
  34.   
  35.            import  mx.collections.ArrayCollection;  
  36.   
  37.              
  38.   
  39.            [Bindable]public  var pageSize: int = 10 ; //每页显示行数   
  40.   
  41.            [Bindable]private  var totalPage: int = 0 ; //总页数   
  42.   
  43.            [Bindable]private  var currentPage: int = 0 ; //当前页   
  44.   
  45.              
  46.   
  47.            [Bindable]  
  48.   
  49.            public  var acAllData:ArrayCollection; //所有数据   
  50.   
  51.            [Bindable]  
  52.   
  53.            private  var acPageData:ArrayCollection= new  ArrayCollection(); //当前页数据   
  54.   
  55.            [Bindable]  
  56.   
  57.            public  var arrColumns:Array; //DataGrid列,在调用时需要为这个数组设置数据   
  58.   
  59.              
  60.   
  61.            //初始化   
  62.   
  63.            public  function init(value:ArrayCollection): void   
  64.   
  65.            {  
  66.   
  67.               acAllData=value;  
  68.   
  69.               if (acAllData.length!= 0  && acAllData!= null )  
  70.   
  71.               {  
  72.   
  73.                   totalPage=Math.ceil(acAllData.length/pageSize);  
  74.   
  75.                   loadData(0 );  
  76.   
  77.               }else {  
  78.   
  79.                   currentPage=0 ;  
  80.   
  81.                   totalPage=0 ;  
  82.   
  83.               }  
  84.   
  85.            }  
  86.   
  87.              
  88.   
  89.            //加载数据   
  90.   
  91.            private  function loadData(pageNum: int ): void   
  92.   
  93.            {  
  94.   
  95.               if (pageNum>= 0  && pageNum<totalPage)  
  96.   
  97.               {  
  98.   
  99.                   acPageData.removeAll();  
  100.   
  101.                   currentPage=pageNum;//重新为当前页的变量赋值   
  102.   
  103.                   var startIndex:int =pageNum*pageSize; //计算起始索引   
  104.   
  105.                   for (var i: int = 0 ;i<pageSize && startIndex<acAllData.length;i++)  
  106.   
  107.                   {  
  108.   
  109.                      acPageData.addItem(acAllData[startIndex]);  
  110.   
  111.                      startIndex++;  
  112.   
  113.                   }  
  114.   
  115.               }  
  116.   
  117.            }  
  118.   
  119.        ]]>  
  120.   
  121.     </mx:Script>  
  122.   
  123.     <mx:VBox x="0"  y= "0"  width= "100%"  height= "100%"  verticalGap= "0"  horizontalAlign= "center"  backgroundColor= "white" >  
  124.   
  125.        <mx:DataGrid id="customgrid"  width= "100%"  dataProvider= "{acPageData}"  columns= "{arrColumns}"  rowCount= "{pageSize}" />  
  126.   
  127.        <mx:HBox cornerRadius="12"  borderStyle= "solid"  horizontalAlign= "center"  verticalAlign= "middle" >  
  128.   
  129.            <mx:Text text="{'  第'+(totalPage>0?(currentPage+1):0)+'页/共'+totalPage+'页'+'  共'+(acAllData!=null?acAllData.length:0)+'条记录'}"  fontSize= "12" />  
  130.   
  131.            <local:Kelvin_LinkButton id="lbtnFirst"  label= "首页"  click= "loadData(0)"  enabled= "{lbtnPrevious.enabled}"  fontSize= "12" />  
  132.   
  133.            <local:Kelvin_LinkButton id="lbtnPrevious"  label= "上一页"  click= "loadData(currentPage-1)"  enabled= "{currentPage!=0?true:false}"  fontSize= "12" />  
  134.   
  135.            <local:Kelvin_LinkButton id="lbtnNext"  label= "下一页"  click= "loadData(currentPage+1)"  enabled= "{totalPage>(currentPage+1)?true:false}"  fontSize= "12" />  
  136.   
  137.            <local:Kelvin_LinkButton id="lbtnLast"  label= "尾页"  click= "loadData(totalPage-1)"  enabled= "{lbtnNext.enabled}"  fontSize= "12" />  
  138.   
  139.             <mx:NumericStepper id="nsPageNum"  stepSize= "1"  minimum= "1"  maximum= "{totalPage}"  enabled= "{lbtnJump.enabled}" />  
  140.   
  141.             <local:Kelvin_LinkButton id="lbtnJump"  label= "跳转"  click= "loadData(nsPageNum.value-1)"  enabled= "{totalPage>1?true:false}"  fontSize= "12" />  
  142.   
  143.        </mx:HBox>  
  144.   
  145.     </mx:VBox>  
  146.   
  147. </mx:Canvas>  
  148.   
  149.    
  150.   
  151. 调用Test.mxml:  
  152.   
  153. <?xml version="1.0"  encoding= "utf-8" ?>  
  154.   
  155. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  layout= "absolute"  xmlns:local= "*"   
  156.   
  157.      creationComplete="creationComplete()" >  
  158.   
  159.      <mx:Script>  
  160.   
  161.         <![CDATA[  
  162.   
  163.            import  mx.collections.ArrayCollection;  
  164.   
  165.              
  166.   
  167.            [Bindable]  
  168.   
  169.            private  var ac:ArrayCollection;  
  170.   
  171.              
  172.   
  173.            private  function creationComplete(): void   
  174.   
  175.            {  
  176.   
  177.                loadAcData();  
  178.   
  179.            }  
  180.   
  181.              
  182.   
  183.            //如果查询出来的数据为xml格式,调用这个方法   
  184.   
  185.            private  function loadXmlData(xml:XML): void   
  186.   
  187.            {  
  188.   
  189.                ac=new  ArrayCollection();  
  190.   
  191.               for  each(item in xml.Table) //将Table换成XML中的根元素名称   
  192.   
  193.               {  
  194.   
  195.                   ac.addItem(item);  
  196.   
  197.               }   
  198.   
  199.               dg.init(ac);  
  200.   
  201.            }  
  202.   
  203.              
  204.   
  205.            //查询出来的结果为数组,直接传递给init即可   
  206.   
  207.            private  function loadAcData(): void   
  208.   
  209.            {  
  210.   
  211.                ac=new  ArrayCollection();  
  212.   
  213.                //测试数据   
  214.   
  215.                for (var i: int = 0 ;i< 35 ;i++)  
  216.   
  217.                {  
  218.   
  219.                   var obj:Object=new  Object();  
  220.   
  221.                   obj.photo_id=i.toString();  
  222.   
  223.                   obj.photo_name="photo" +i;  
  224.   
  225.                   ac.addItem(obj);    
  226.   
  227.                }  
  228.   
  229.                dg.init(ac);   
  230.   
  231.            }  
  232.   
  233.         ]]>  
  234.   
  235.      </mx:Script>  
  236.   
  237.      <!--设置pageSize为8 ,表示每页显示 8 条记录,不设置默认显示 10 条记录-->  
  238.   
  239.     <local:kelvin_DataGrid id="dg"  width= "100%"  height= "100%"  pageSize= "8" >  
  240.   
  241.        <local:arrColumns><!--为这个标签设置DataGridColumn,指示在DataGrid上显示的列-->  
  242.   
  243.            <mx:DataGridColumn headerText="id"  dataField= "photo_id" />  
  244.   
  245.            <mx:DataGridColumn headerText="name"  dataField= "photo_name" />  
  246.   
  247.        </local:arrColumns>  
  248.   
  249.     </local:kelvin_DataGrid>  
  250.   
  251. </mx:Application> 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics