轉念從 C# 程式 Code 來處理分頁需求,作法很單純就是把針對群組跑迴圈,一個群組就送一次報表,每次都直接輸出不預覽,SSRS 多欄位報表內就不用特別設計,拉一個 Tablix 在多欄位報表內顯示資料而已,但該作法缺點在於
- 直接輸出,沒有辦法預覽:真的需要預覽功能的話,需要拉一個用頁面來顯示相關資料,讓使用者先行確認,確認後再進行列印
- 無法使用 SSRS 內建頁碼功能:實務上剛好也沒有這個需求,就沒有多加研究,暫時 pass 囉
直接輸出報表,請參考該筆記 - [RV] 列印本機報表而不進行預覽
以 AdventureWorks2019 Person.Address Table 資料為主,針對程式跑迴圈並直接輸出報表至印表機
namespace MultiColumnPageBreak
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var dbContext = new AdventureWorks2019DbContext();
var source = dbContext.Address
.Where(x => x.City == "Miami" || x.City == "Snohomish")
.OrderBy(x => x.City)
.ThenBy(x => x.AddressLine1)
.ToList();
var reportDataSource = new ReportDataSource(nameof(Address));
reportViewer1.LocalReport.DataSources.Add(reportDataSource);
var cities = source.GroupBy(x => x.City).Select(x => x.Key).ToList();
foreach (string city in cities)
{
var citySource = source.Where(x => x.City == city).ToList();
reportDataSource.Value = citySource;
// TODO 報表直接輸出
}
}
}
}
正常多欄位報表
沒有留言:
張貼留言