亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

GroupingView控件 使用經驗

系統 1979 0

???? 你是否經常使用GridView進行數據輸出?你是否曾經試圖使用VS.Net自帶的GridView控件來實現分組統計等功能?是不是覺得實現起來很麻煩或者壓根實現不了?
???? 如果你不曾遇到過類似問題,那么這篇文章對你將毫無幫助。
???? 這個控件就可以為幫我們很好的解決分組統計等問題,功能很強大。(PS:我不是做廣告哦,只是有感而發~)當然,除了這個控件外,還有一個 GridViewHelper 控件,同樣可以實現強大的分組功能,但是從我使用的體驗來說,個人更傾向 GroupingView 。可能是我對GridViewHelper使用不多的原因,我認為使用GridViewHelper對頁面的布局基本上不需要做任何設置。而分組、統計等等功能,都是利用后臺代碼進行設置,對于簡單的分組幾乎只要寫一個語句就可以實現。可以說是相當方便。但是,我在使用過程中遇到幾個問題:1、如果不是利用ASP.NET 提供的數據源控件對GridView進行數據源的綁定,而是通過在page_load事件中執行數據源綁定,則按照示例代碼進行編輯就無法顯示預期效果。2、由于它的方便,導致使用不靈活,因為有些時候我們可能希望布局上更加隨意,但由于該控件不需要對布局進行設置,也使得我們如果想調整布局將會很麻煩。(以上2點,是我初淺的使用后的感覺,可能深入使用下去,還會有更多問題。當然也可能是因為我不會用造成的。)
???? 說完了GridViewHelper,接下來就到了這篇文章的主角上場了,我在使用GroupingView中并沒有遇到上面的問題。
?????? GroupingView 控件的詳細使用介紹及下載,請 點擊 。該控件是由 Mike Ellison 開發的,我試用了一下,感覺不錯。

?????? 使用經驗:
?????? 1.下載該控件,可以找到GroupingView.dll文件,將該dll文件添加到你的項目Bin文件夾中。
?????? 2.在要使用的頁面注冊GroupingView控件:

<% @?Register?Assembly = " GroupingView " ?Namespace = " UNLV.IAP.WebControls " ?TagPrefix = " cc1 " ? %>
?????? 3.進行布局。你可以進行任意的布局,比如你可以讓匯總的結果顯示在左邊、右邊,可以在行與行之間加入分隔符,可以添加其它標記等等。
?????? 但是,首先要遵守一定的布局結構。基本結構如下:
< cc1:GroupingView?ID = " gvTest " ?runat = " server "  AutobindDataSourceChildren = " true " ???GroupingDataField? = ? " 分組排序的字段 " >
????
< GroupTemplate >
???????
<!-- 這里你可以顯示分組的數據,這里的代碼每個分組只執行一次 -->
???????
< asp:PlaceHolder?ID = " itemPlaceholder " ?runat = " server " ? /> ? <!-- 這個控件用來顯示分組內詳細的item,顯示樣式由ItemTemplate決定 -->
???????
<!-- 這里你可以顯示分組的數據,這里的代碼每個分組只執行一次 -->
????
</ GroupTemplate >
????
< ItemTemplate >
  ??
<!-- 這里顯示每個分組內的詳細數據記錄,執行次數等于該分組內的記錄數 -->
????
</ ItemTemplate >
</ cc1:GroupingView >
  4.與數據源進行綁定,我這里是通過在Page_Load中進行綁定。
Code

?????
  接下來,我來舉幾個實例。
e.g. 1 效果圖如下:
  sno???? |?? sname?? |?? cname? |? score  
?????? 1????????????? s1???????????? c1?????????? 80
???????1????????????? s1???????????? c2?????????? 90
?????? 1????????????? s1???????????? c3?????????? 70
????? 總分:240
  sno???? |?? sname?? |?? cname? |? score  
???????2????????????? s2???????????? c1?????????? 80
???????2????????????? s2???????????? c2?????????? 80
???????2????????????? s2???????????? c3?????????? 80
????? 總分:240

Code


????? 其中的?<cc1:Aggregation ID="Aggregation1" runat="server" Function="Sum" DataField="score" />是該控件提供的一種集合運算控件,你可以通過設置Function來得到對某一字段進行統計運算如Sum、AVG等。在ItemTemplate中,我們可以看到很熟悉的Eval,這個就是用來與數據進行綁定,而ItemTemplate中的代碼和數據則會最終被填充到ID為 itemPlaceholder 的placeholder容器中。這樣最終就可以顯示成如效果圖所示的樣子了。

e.g.?2 效果圖如下:
  sno???? |?? sname?? |?? cname? |? score  
?????? 1????????????? s1???????????? c1?????????? 80
???????1????????????? s1???????????? c2?????????? 90
?????? 1????????????? s1???????????? c3?????????? 70
????? 總分:240 
???????2????????????? s2???????????? c1?????????? 80
???????2????????????? s2???????????? c2?????????? 80
???????2????????????? s2???????????? c3?????????? 80
????? 總分:240

????? 細心的朋友,應該已經看出1和2這兩個例子的區別了吧?是的,在示例2中,第二個分組的列頭不再重復顯示了。這個是怎么實現的呢?要實現這個效果就需要添加一個"OnGroupCreated"事件,這個事件在每一個分組被創建的時候觸發,我們就在這個事件中判斷是否需要列頭,如果不需要就不顯示。
  根據Mike Ellison提供的做法是添加一個placeholder容器。然后將列頭的布局代碼移動到該容器中,然后在OnGroupCreated事件中判斷此組是否為第一組,如果不是就設置該容器的Visible屬性為false。
  前臺的布局只是增加了一個placeholder,因此就不再演示了,我把后臺的那個事件寫一下,讓大家參考一下。

Code


e.g.?3 效果圖如下:
  sno???? |?? sname?? |?? cname? |? score  
??????????????????????? ? ???????????? c1?????????? 80
???????1????????????? s1???????????? c2?????????? 90
???????????????????????? ????????????? c3?????????? 70
????? 總分:240 
????????????????????????? ???????????? c1?????????? 80
???????2????????????? s2???????????? c2?????????? 80
?????????????????????????????????????? c3?????????? 80
????? 總分:240

??????這個例子就是使分組字段在每組中只出現一次,而不再重復出現。
  要實現這個效果,就需要我們修改布局代碼,這個例子可以很好的說明該控件的靈活性,因為布局要怎么樣完全由我們自己說了算。如果想讓分組字段在一個組內只出現一次,我們就應該把數據直接寫到GroupTemplate中,因為這其中的代碼每一組只執行一次。如果想讓他居中顯示,那就是合并單元格的事了。而合并單元格對于table標記是不是很容易辦到呢?只要設置rowspan或colspan就可以搞定了。下面來看下布局代碼。

Code

e.g.?4 效果圖如下:
????? sno=1
  sno???? |?? sname?? |?? cname? |? score  
??????????????????????? ? ???????????? c1?????????? 80
???????1????????????? s1???????????? c2?????????? 90
???????????????????????? ????????????? c3?????????? 70
????? 總分:240 
????? sno=2
?????????????????????????????????????? c1?????????? 80
???????2????????????? s2???????????? c2?????????? 80
?????????????????????????????????????? c3?????????? 80
????? 總分:240
????? 大家是不是看見在每一組的列頭前又多了一條數據(用來顯示每個組的字段)。如果你看了前面幾個例子,相信這個應該馬上能想出來怎么實現吧?方式很多,比如用表格、DIV等+Eval。具體實現方式就不寫了,就當是測驗下自己吧。如果實在不會,就給我發EMail吧~

  看了上面的這些例子,你是不是覺得使用這個控件似乎與自帶的GridView控件一點沒聯系了,其實不然。我們上面呈現數據的方式,都是使用table,你還可以直接把一個GridView放在GroupTemplate中,這樣會更加方便,不過肯定不如table靈活多變(個人認為)。關于如何使用GridView來呈現數據,我就不舉例了。大家只要去我提供的網址下載該控件,里面包含很多Sample,Sample1中就是用的GridView。?

GroupingView控件 使用經驗


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 性欧美4k高清精品 | 欧美一级毛片aaaaa | 欧美午夜精品久久久久免费视 | 99精品欧美一区二区三区 | 国产精品久久久亚洲动漫 | 99久久精品国产自免费 | 久久99这里精品8国产 | 久久99精品一久久久久久 | 狠狠色丁香六月色 | 激情五月色婷婷在线观看 | 青草操 | 欧美成人一区二区三区 | 欧美夜夜操 | 欧美精品国产日韩综合在线 | 国产九九热视频 | 精品国产高清自在线一区二区三区 | 夜夜骑天天操 | 天天干天天爱天天操 | 精品欧美一区手机在线观看 | 99r精品视频| 久久夜夜操妹子 | 99r8这里精品热视频免费看 | 国产午夜精品一区二区三区 | xxxx日本在线播放免费不卡 | 欧美色图片区 | 国产亚洲精品国产福利在线观看 | 2018天天操天天干 | 国产精品久久久久无毒 | 玖玖色视频 | 99热在线观看精品 | 国产福利免费在线观看 | 91精品全国免费观看 | 久久毛片网站 | 亚洲欧美动漫 | 免费视频一级片 | 国产精品丝袜在线 | 久久精品7 | 农村寡妇一级毛片免费看视频 | 日本一本久 | 99久久国产综合精麻豆 | 国产一级久久久久久毛片 |