有才華的人,別忘記給滋潤(rùn)你的那塊土壤施肥

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            28 隨筆 :: 5 文章 :: 147 評(píng)論 :: 0 Trackbacks
          <2009年8月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(15)

          我參與的團(tuán)隊(duì)

          隨筆分類

          隨筆檔案

          文章分類

          記得常去逛逛

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

                

                   Excel的表格中會(huì)在在一組數(shù)據(jù)的后面有一行數(shù)據(jù)來(lái)顯示這個(gè)表格的某一列的平均數(shù),最大值,最小值等,在Flex中做些小動(dòng)作也能做出類似效果。
              
              其實(shí)Alex Harui早已經(jīng)為我們做了要求,我們先看運(yùn)行效果:


                其實(shí)原理很簡(jiǎn)單就是在重寫DataGrid在列尾添加一個(gè)UIComponent即取名為:DataGridFooter,讓它去展現(xiàn)平均數(shù),最大值等,在這里最重要的是重寫DataGridColumn,在這個(gè)類中我們添加一個(gè)footerColumn:DataGridColumn,讓這個(gè)footerColumn的labelFunction計(jì)算出對(duì)應(yīng)的平均數(shù),最大值等處理(關(guān)于labelFunction的使用請(qǐng)看這里:Flex Hack 01:labelFunction的使用),代碼如下:

          import mx.controls.dataGridClasses.DataGridColumn;
              [DefaultProperty(
          "footerColumn")]
              public class FooterDataGridColumn extends DataGridColumn
              
          {
                   public 
          function FooterDataGridColumn()
                   
          {
                    super();
                   }

                   
          /**
                   * 用這個(gè)對(duì)應(yīng)的labelFunction計(jì)算出這一列的最大值或最小值等等
                   * *
          */

                   public 
          var footerColumn:DataGridColumn;
              }

               然后就是重寫DataGrid,用于顯示列尾 ,如重寫createChildren方法:
          override protected function createChildren():void
                  
          {
                      super.createChildren();
                      
          if (!footer)
                      
          {
                          footer 
          = new DataGridFooter();
                          footer.styleName 
          = this;
                          addChild(footer);
                      }

                  }
             再就重寫adjustListContent方法以確定footer的位置:
            override protected function adjustListContent(unscaledWidth:Number = -1,
                                                     unscaledHeight:Number 
          = -1):void
                  
          {
                    super.adjustListContent(unscaledWidth, unscaledHeight);
                    listContent.setActualSize(listContent.width, listContent.height 
          - footerHeight);
                    footer.setActualSize(listContent.width, footerHeight);
                    footer.move(listContent.x, listContent.y 
          + listContent.height + 1);
                   }
              同時(shí)當(dāng)有一些屬性更改或拖動(dòng)來(lái)更新footer的位置等等,那么我們還有重寫一個(gè)方法:
          override public function invalidateDisplayList():void
                   
          {
                        super.invalidateDisplayList();
                        
          if (footer)
                             footer.invalidateDisplayList();
                   }
               還有一個(gè)類DataGridFooter,這個(gè)就是我們的主角,用于顯示列尾的數(shù)據(jù),關(guān)于這個(gè)類沒(méi)什么特別的,就是計(jì)算他們的位置顯示等等,有興趣的朋友可以在下面的資料中下載代碼看看。

          測(cè)試?yán)樱?a style="text-decoration: underline" target="_blank">點(diǎn)擊這里

          源文件下載:Download


          posted on 2009-08-17 22:27 kissjava 閱讀(2482) 評(píng)論(6)  編輯  收藏 所屬分類: Flex

          評(píng)論

          # re: Flex Hack 02:DataGrid列尾,用于數(shù)據(jù)匯總 2009-08-18 09:51 凡客誠(chéng)品
          不錯(cuò)啊  回復(fù)  更多評(píng)論
            

          # re: Flex Hack 02:DataGrid列尾,用于數(shù)據(jù)匯總 2009-09-02 13:33
          源文件看起來(lái)是對(duì)的,但用起來(lái)會(huì)出現(xiàn)行列不對(duì)齊的錯(cuò)誤,不能使用  回復(fù)  更多評(píng)論
            

          # re: Flex Hack 02:DataGrid列尾,用于數(shù)據(jù)匯總 2009-09-03 22:13 kissjava
          @的
          呵呵,是嗎?我運(yùn)行沒(méi)問(wèn)題呀

            回復(fù)  更多評(píng)論
            

          # re: Flex Hack 02:DataGrid列尾,用于數(shù)據(jù)匯總 2010-12-20 15:06 fff
          當(dāng)你把datagrid的屬性horizontalScrollPolicy="on"的時(shí)候(在下面顯示滾動(dòng)條)

          這個(gè)時(shí)候你去拖動(dòng)列線,改變列寬,右下角的數(shù)字就會(huì)露到datagrid的外面,有沒(méi)有解決辦法?
            回復(fù)  更多評(píng)論
            

          # re: Flex Hack 02:DataGrid列尾,用于數(shù)據(jù)匯總 2011-01-09 21:43 圣戰(zhàn)風(fēng)云
          你給datagrid加一個(gè)水平滾動(dòng)條,你會(huì)發(fā)現(xiàn)一些BUG  回復(fù)  更多評(píng)論
            

          # re: Flex Hack 02:DataGrid列尾,用于數(shù)據(jù)匯總 2013-04-07 16:07 偽大神
          @kissjava
          要是lock了一列,下面的合計(jì)行會(huì)對(duì)不上,這個(gè)問(wèn)題怎么解決?  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 襄樊市| 沐川县| 菏泽市| 淮南市| 柳林县| 安化县| 油尖旺区| 阳谷县| 砚山县| 五峰| 和田县| 凉山| 麻阳| 四川省| 江达县| 彝良县| 凤庆县| 石首市| 新巴尔虎右旗| 临夏县| 巫溪县| 射阳县| 棋牌| 措勤县| 永修县| 新源县| 高青县| 江城| 舞阳县| 乌鲁木齐市| 阆中市| 温宿县| 顺平县| 日照市| 南川市| 兴文县| 陇川县| 靖远县| 晋城| 藁城市| 桃园县|