[window form]使用report viewer遇到的小問題

[window form]使用report viewer遇到的小問題

最近在window form用report viewer,整理一下遇到的問題及找到的解法

1. 要改橫向列印:將page size改成11in X 8.5in,原先設定為 8.5in X 11in(直向)

clip_image001

2. 多印空白頁:確定主體的寬度是否過寬,A4的寬度為21公分(8.23英吋),修改成合適的寬度

clip_image002

3. 如何使用物件當做報表來源:參考下列網址

http://msdn.microsoft.com/zh-tw/library/ms251692(VS.80).aspx

4. 畫面不會更新:在webform跟windowform有點不同

web form

{
 DropDownList b = (DropDownList)sender;

 ObjectDataSource2.SelectParameters.Clear();

 ObjectDataSource2.SelectMethod = "GetData";

 ObjectDataSource2.SelectParameters.Add(new Parameter("CustomerID", DbType.String, b.SelectedValue));

 //將查詢出的 orders 資料表資料提供給 DataSet2_Orders
 ReportDataSource rds = new ReportDataSource("DataSet2_Orders", ObjectDataSource2.ID);

 ReportViewer1.LocalReport.DataSources.Clear();

 //將 資料 新增到 ReportViewer1 的 DataSources
 ReportViewer1.LocalReport.DataSources.Add(rds);

 ReportViewer1.LocalReport.Refresh(); // 給web form使用
 
 ReportViewer1.Visible = true;
}

window form

        {
            //使用物件當作資料源
            List<NewMediaTest1.Model.Report.EmpCustReportItem> reportitem = new List<NewMediaTest1.Model.Report.EmpCustReportItem>();            
            //取得資料
            DataTable ds = GetQueryData();
            foreach (DataRow dr in ds.Rows)
            {
                NewMediaTest1.Model.Report.EmpCustReportItem a = new NewMediaTest1.Model.Report.EmpCustReportItem(dr);
                reports.Add(a);
            }
            //指定binding source
            this.EmpCustReportItemBindingSource.DataSource = reportitem;
            this.reportViewer1.RefreshReport(); // for window form
        }

之前在window from用Refresh(),報表不會重新產生,要用RefreshReport()才行

1

參考資料

ASP.NET - ReportViewer Control 使用心得(二) - 張小呆的碎碎唸- 點部落

逐步解說:在本機處理模式中,搭配 ReportViewer Web 伺服器控制項使用商務物件資料來源

7月13日RDLC报表,ReportViewer使用详解- 凡哥(尘士留缘)的日志- 网易博客

使用ReportViewer匯出pdf會多一頁空白

report viewer為什麼會多跳一頁?