Microsoft Report ViewerをWebFormで使ってみる
Communityエディションはオプションらしいので追加でインストールしましょう。
まず、素のWinFormプロジェクト
新しい項目の追加から、Reportingでレポートを追加。
ツールボックスから一覧を落とします。 これがデータの明細です。 なんだか、複数貼れるようですが よくわからないので一つにしておきます。
と、データセットプロパティーウィンドウが出るので設定します。
すでにデータソースがあれば、プルダウンから なければ新規作成から
あとは、レポートデータや、ツールボックスから、一覧の上にパーツを貼ります。 外にも張れますが、いっかてしか表示できません。 テーブルから一覧的に印字する場合は、必ず一覧の上に貼る様にします。
なぜか一覧上にパーツが乗らない場合は、Visual Studioとか、Windowsを再起動してみるといいでしょう。
プレビューとプレビューからの印刷
プレビュー画面を作ります
追加から新規のWebフォームを一つ作って ツールバーから、ReportViewerを追加
ツールバーから、ReportのReportViewerと、Ajaxの Script Maneger を追加
矢印の三角をクリックしてください
作ったレポートを指定します。
これを実行すると
これでは、固定の出力しかできない。 もちろん、パラメーター付きのクエリのGetDataメソッドを足せばいい。 でも、コードベースでデータを差し替えたいと思う。
此処までくるとObjectDataSouceというものができているので、これを何とかすればと思うところですが、私はダメでした。
RcordViewerを触ります。右クリックして出たポップアップメニューから、コードへ移動を選んで移動
移動しました。
Page_Loadに書いてみます。
ボタンイベントでも大丈夫です。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
using (EstateManagerTestDataSetTableAdapters.document_folderTableAdapter document_folderTableAdapter_ = new EstateManagerTestDataSetTableAdapters.document_folderTableAdapter())
{
EstateManagerTestDataSet.document_folderDataTable table = document_folderTableAdapter_.GetData();
foreach (EstateManagerTestDataSet.document_folderRow row in table)
{
if (row.document_folder_id % 2 == 0)
{
row.Delete();
}
}
table.AcceptChanges();
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", (System.Data.DataTable)table));
ReportViewer1.DataBind();
}
}
}
IDが奇数の物だけになりましす。