一個資料交叉表控制項的實現(開篇)

來源:互聯網
上載者:User

         因為做的項目很多都和資料統計相關,一直要做很多的報表,而其中很大的一部分的報表都是資料交叉表的類型,也因為最近在改版.Net的自訂進階分析的功能,所以忽然萌生了要寫一個控制項來一勞永逸。把我在設計編碼過程中得到的啟示和收穫和大家一起分享 。

1:目的
      實現資料的任意交叉統計功能,和前台顯示功能;
2:功能
      可以綁定datasource,datatable,dataview中的任意一個資料來源(其實這塊沒有什麼大的東西,最終轉化成DataTable)
      指定在哪些緯度1 放在橫軸上,哪些緯度放在縱軸上(即指定DataTable的設定緯度資料所在的列名),設定數值列(只支援一個數值列,多個數值列的顯示比較複雜,以後再研究)
     自訂顯示的格式,樣式
     自訂單員格單擊函數
     分類合計功能;
3:思考
      設計這樣一個控制項的難度其實並不在於統計功能,還是在如何顯示,如何能根據提供屬性來畫出一個交叉資料表,table的構建。所以雖然控制項支援統計功能,但是還是建議使用SQL本身的統計功能,先Group好了再由控制項顯示(效率可要提高N倍)。
      綁定了DataTable如何讓他成為交叉的資料列那呢?假設圖1中的表是DataTable的資料列,那麼如何來將下表展現為2-圖5所示的格式呢?
  


圖 1

圖2

圖3

圖4

圖5

上面是最簡單的要求,當然橫豎軸的系列,應該理論上是無限級的,至此我陷入了如何來計算rowspan和colspan的苦惱之中 。
通過現有的DataTable的列屬性來計算實在是太複雜,所以我想到構建用於類比橫豎軸的類,同時也方便以後做擴充
簡單的類圖如下:

圖6

下回內容:通過組建Axes軸和Cell數組來建立資料交叉表模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.