我需要在报表查看器(rdlc文件)中显示客户列表(每页一个客户),以及与该客户相关的订单(在同一客户信息页面上)和注释。如何插入Tablix以便每个客户都有分页符?
这应该是它的样子:
这就是我想要在报告中添加数据的方式:
List<Customer> customers = db.Customers;
LocalReport.DataSources.Add(new ReportDataSource("Customers", customers))
public class Customer
{
public string Name { get; set; }
public string PhoneNumber { get; set; }
public List<Order> Orders { get; set; }
public List<Comment> Comments { get; set; }
}
public class Order
{
public string Product { get; set; }
public int Qty { get; set; }
public decimal Price { get; set; }
}
public class Comment
{
public string Description { get; set; }
}
编辑:也许我没有正确表达。我不知道如何在列表项上显示每个客户的订单和评论。我该如何分组?如何将DataSet设置为Sub Table(对于订单和注释)
答案 0 :(得分:0)
以下MSDN页面https://msdn.microsoft.com/en-us/library/dd207058.aspx 表示如果要将分页符添加到表,矩阵或列表中的行组,请按照以下步骤操作:
答案 1 :(得分:0)
我最后使用子报告:
标题(姓名和电话),子报告位置和分页符的一个重要报告
订单的一个子报表(CustomersOrders.rdlc):添加子报表参数(CustomerId)
评论的一个子报告(CustomersComments.rdlc):添加子报告参数(CustomerId)
报表呈现器窗口中的静态属性,其中包含客户列表
在报告渲染器窗口中添加SubreportProcessing处理程序:
LocalReport.SubreportProcessing += Customers_SubreportProcessing;
private void Customers_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
ReportParameterInfo customerId = e.Parameters.FirstOrDefault(c => c.Name == "CustomerId");
if (customerId== null)
return;
Customer customer = _customersList
.FirstOrDefault(c => c.CustomerId == customerId.Values.FirstOrDefault());
if (e.ReportPath == "CustomersOrders") // Name for subreport CustomersOrders.rdlc
{
e.DataSources.Add(new ReportDataSource("Orders", customer.Orders));
}
else if (e.ReportPath == "CustomersComments") // Name for subreport CustomersComments.rdlc
{
e.DataSources.Add(new ReportDataSource("Comments", customer.Comments));
}
}