0.前置き

この記事はOne ASP.NET Advent Calendar 2012の10日目のエントリーです。
9日目は、@miso_soup3さんの『ASP.NET MVC コア拡張部』でした。

ASP.NETならなんでもOKということで、WebFormの内容で書いてみます。
年末ですし(?)、個人的にWebFormといったらこのコントロールでしょベスト3をお送りしたいと思います。
別に基準はないのですが、自分が感心したとか、いかにもWebFormっぽいなというものを集めて発表します。

1. ランキング発表

第3位! 「Chart」

まずは第3位からです。

第3位は…Chartコントロールです!
Chartコントロールは、比較的新参者で、3.5から入ってきたものだと思います。
このコントロールを利用すれば、30種類以上のグラフを描画することができます。
サンプルではObjectDataSourceを利用して、データを取得し、折れ線グラフを書いてみました。
この程度のものであれば、コードなしでプロパティの設定のみで完成します。

chart

aspx側のコードはこんな感じです。
[sourcecode language=”html”]
<asp:Chart
ID="SampleChart"
runat="server"
BorderlineWidth="3"
DataSourceID="ChartObjectDataSource">
<Series>
<asp:Series
Name="Series1"
ChartType="Line"
IsValueShownAsLabel="True"
MarkerStyle="Diamond"
XValueMember="Year"
YValueMembers="Income">
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="ChartArea1">
</asp:ChartArea>
</ChartAreas>
<Titles>
<asp:Title Name="Income" Text="年収">
</asp:Title>
</Titles>
</asp:Chart>
[/sourcecode]

第2位!! 「ReportViewer」

では、続いて、第2位の発表。

ちょっとずるいですが第2位は…ReportViewerコントロールです!!
このコントロールは、SQL Serverの簡易BIツールSQL Server Reporting Services(以降、SSRS)のビューワー機能として提供されています。
Webアプリ上に、帳票やグラフを作りたい、エンドユーザーにも作れる環境(ReportBuilderというツールがある)を提供したいなどの要件にマッチします。
なおSSRSにはWebサーバが付属していますが、ちょっと使いにくいです。(たぶんFull IISじゃないです。)
そこで自分が作ったWebアプリとシームレスに接続するために、このReportViewerコントロールが活躍します。
SSRSについては、ここで語ると趣旨がずれてしまうので、自習書などをご参考にして下さい。
いつかこのブログでもちゃんと解説を書こうと思います。

SSRSとReportViewerコントロールを利用すると以下のようにSSRSのレポートが表示されます。
サンプルとして地図上に人口を表現したバブルチャートを書いてみました。

reportviewersample

aspxは以下の通りです。
ScriptManagerが必要になるのでお忘れなく。

[sourcecode language=”html”]
<asp:scriptmanager ID="Scriptmanager" runat="server"></asp:scriptmanager>
<rsweb:ReportViewer
ID="SampleReportViewer"
runat="server"
ProcessingMode="Remote"
Height="600px" Width="750px">
<ServerReport ReportPath="/全社/関東地方の人口" ReportServerUrl="http://{SSRSサーバー名称}/reportserver" />
</rsweb:ReportViewer>
[/sourcecode]

第1位!! 「GridView」

そして…第1位の発表です!

第1位は



GridViewコントロール!!!

やはりWebFormっぽいコントロールといったら、GridViewコントロールですね。
なんか便利そうだけど、癖のある感じとかWebFormっぽいです。
このコントロールは、データを表形式で表現するときに利用します。
GridViewコントロールを利用すれば、データに対する編集・削除、ページング、デザインの適用などをほとんど
プロパティベースでできます。作成した感じは下記の通りです。

gridview

aspxのコードは下のようになります。

[sourcecode language=”html”]
<asp:GridView
ID="SampleGridView"
runat="server"
DataSourceID="GridviewObjectDataSource"
AllowPaging="True"
AutoGenerateColumns="False"
BackColor="#DEBA84"
BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px"
CellPadding="3" CellSpacing="2"
PageSize="3">
<Columns>
<asp:BoundField DataField="Year" HeaderText="年" SortExpression="Year" />
<asp:BoundField DataField="Money" HeaderText="年収" SortExpression="Money" />
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" ButtonType="Button" />
</Columns>
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#FFF1D4" />
<SortedAscendingHeaderStyle BackColor="#B95C30" />
<SortedDescendingCellStyle BackColor="#F1E5CE" />
<SortedDescendingHeaderStyle BackColor="#93451F" />
</asp:GridView>
[/sourcecode]

2.最後に

というわけで、WebFormっぽいコントロールベスト3を発表してみました。
ざっと見てみましたが、豊富ですね。
もちろん使いどころには十分注意する必要がありますが、
特性などを把握すればとても効率的に開発が行えると思います。
このシーンでは、GridView。こういった使い方の時には、ListView。柔軟にしたいからSSRSと連携などなど。
もう少し視野を広げて、こういった特性のアプリケーションでは、WebForm。
こうゆう場合は、MVCみたいな使い分けができるとさらに良いですよね。

明日12月11日は、@neueccさんです~。