- Reporting Services依筆數分頁
- 匯出Excel 時不要將每頁分成好幾個 sheet
也有透過增加群組進行分頁,無SQLSERVER負擔,但平白多了一個欄位,也無法解決匯出Excel 時每頁分成好幾個 sheet。
以下將透過Tablix成員來進行分頁控制,資料庫是AdventureWorks2012,工具VS2012+Report Viewer 2012。
- 新增一web空白專案
- 新增項目【報表】
- 新增項目:資料集,命名AdventureWorks2012.xsd
- 加入資料庫連接
伺服器總管-資料連接-右鍵-加入連結
設定號按確定後,就可以看到我們設定的資料連接
- 建立資料表Databaselog,只要將左邊資料表Databaselog拖曳到資料集編輯畫面
- 切換到Report1.rdlc,設定資料集
報表資料-資料集-右鍵-加入資料集
設定資料集,命名rptdsDatabasLog,資料來源:AdventureWoeks2012,可用資料集:DatabaseLog
確定後就會產生我們的資料集
- 到工具箱,拖拉一個資料表,Name:TablixDatabaseLog
- 切到報表資料,將DatabaseLogID,拖拉到資料欄
PostTime, DatabaseUser也同樣做法
- 新增項目【Web Form】:WebForm1.aspx
- 拖拉ReportViewer,ScriptManager到頁面上
- 到code-behind:WebForm1.aspx.cs
加入Using
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms; - 以下是抓取資料,填到報表的程式
using System.Configuration; using System.Data; using System.Data.SqlClient; using Microsoft.Reporting.WebForms; namespace WebReporting { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { BindReport(); } } private DataTable FetchData() { string sql = "Select * from databaseLog"; String conStr = ConfigurationManager.ConnectionStrings[ "AdventureWorks2012ConnectionString"].ConnectionString; SqlDataAdapter da = new SqlDataAdapter(sql, conStr); DataTable dt = new DataTable(); da.Fill(dt); return dt; } private void BindReport() { ReportDataSource rds = new ReportDataSource(); rds.Name = "rptdsDatabasLog"; //報表的資料集名稱 rds.Value = FetchData(); //填入報表資料(dataTable) ReportViewer1.LocalReport.ReportPath = "Report1.rdlc"; //local report名稱 ReportViewer1.LocalReport.DataSources.Clear(); ReportViewer1.LocalReport.DataSources.Add(rds); ReportViewer1.LocalReport.EnableExternalImages = true; ReportViewer1.LocalReport.Refresh(); } } }
- 產生的報表
接著進行依照筆數進行分頁,並解決Excel會分成多個Sheet問題:
>>Reporting Services依筆數分頁;動態分頁-轉出Excel不分sheet(2)
沒有留言:
張貼留言