这张表显示了该公司的详细资料。
我们按照 ReportViewer教程(2)-添加空报表Report1.rdlc
和 ReportViewer教程(3)-添加空报表Report1.rdlc
的方法添加一个名为Report2.rdlc的新报表,从已有的数据源中拖入相应的字段到报表中。
在名称和提示中分别输入“Parameter_公司名称”,按确定。
从工具箱中拖入一个文本框到“table1”表的上方,在其中输入:
=Parameters!Parameter_公司名称.Value & " 详细信息"
做好的表如下图:
在表达式的第一行中下拉后选:"=Fields!公司名称.Value"一项,如下图:
在"值"的第一行下拉后选"表达式",如下图:
在出来的“编辑表达式”对话框中选参数,再双击参数“Parameter_公司名称”参数,
这样参数就自动填为:=Parameters!Parameter_公司名称
如下图:
再按确定,退出“编辑表达式”对话框。再按确定,退出表属性对话框。
这时Report2.rdlc报表就做好了。
再调出Report1.rdlc报表设计画面,
右击公司名称下面一个单元格,点属性,调出该单元格的“文本框属性”,
选“导航”选项卡,再选“跳至报表”,下拉后有“Report2”,将它选中:如下图:
参数值为:=Fields!公司名称.Value
按确定。再按确定退出该单元格的“文本框属性”对话框。
这样Report1.rdlc报表也就设置好了。
二个表设好后还要输入一些引发钻取事件的代码。
调出Form1.vb代码编辑画面,添加一个钻取事件的方法“名为DemoDrillthroughEventHandler”:
如果是 .net VB ,添加代码如下:
Private Sub DemoDrillthroughEventHandler(ByVal sender As System.Object, ByVal e As DrillthroughEventArgs)
Dim myLocalReport As LocalReport
myLocalReport = e.Report
myLocalReport.DataSources.Add(New ReportDataSource("DataSet1_DataTable1", Me.DataSet1.DataTable1))
End Sub
在再Form1_Load中添加一行代码:
AddHandler ReportViewer1.Drillthrough, AddressOf DemoDrillthroughEventHandler
如果是 .net C# ,添加代码如下:
要有命名空间:using Microsoft.Reporting.WinForms;
void DemoDrillthroughEventHandler(object sender, DrillthroughEventArgs e)
{
LocalReport localReport = (LocalReport)e.Report;
localReport.DataSources.Add(new ReportDataSource
("DataSet1_DataTable1",this.DataSet1.DataTable1));
}
在再Form1_Load中添加一行代码:
reportViewer1.Drillthrough += new DrillthroughEventHandler(DemoDrillthroughEventHandler);
代码添加完后运行程序:
上面是从一个报表向另一个报表传送参数,如果从程序的代码中向报表传送参数,请按下面的图示来做。
下图说明了用.net vb 代码向Report1.rdlc的报表传送内容为“定单报表”的参数:
如果是 .net C# 的话,用下面的代码:
ReportParameter p = new ReportParameter("Report_Parameter_0", "定单报表");
this.reportViewer1.LocalReport.SetParameters(new ReportParameter[]{p});