许多报表都有外部提供的参数,比如年份,月份,员工姓名等,来动态的生成报表,所以使用外部参数的功能还是比较经常使用到的。本文主要描述何如添加ReportViewer的外部参数。本文是在上一篇(http://blog.csdn.net/much0726/archive/2008/11/11/3276839.aspx)的基础上描述的。
1. 在TestDataSet.xsd文件的数据集绑定中,选择“配置”,在弹出的配置向导中将SQL语句修改为:select * from Data where Col001=@col001,点确定。在预览数据的窗口中可以测试下写的SQL语句,其中@col001是外部的参数,在属性中可以配置所有参数的属性,比如,是否支持NULL的参数,DbType是指传入参数的类型,ProviderType是指数据库中的类型。
2. 回到原来的Test.aspx页面中,在ReportViewer控件头部拖入一个TextBox和一个Button,这里也可以使用Dropdownlist,都是一样的。
3. 这里添加参数的传入有两个方法。
a) 使用属性配置传入,在ObjectDataSource1属性的SelectParameters中添加参数,数据源选择control,ControlID选择TextBox1,记得把名称该为Col001.
b) 使用代码动态添加,在Button1的代码中添加:
- protected void Button1_Click(object sender, EventArgs e)
- {
- ObjectDataSource1.SelectParameters[0].DefaultValue = TxtBeginTime.Text.Trim();
- ReportViewer1.LocalReport.Refresh();
- }
4. 按F5运行程序,查看效果,在文本框中添加1,然后点按钮.
小结
第一种方法的缺点就是页面载入时自动就选择了绑定该参数,如果参数是空,而DataSet中有没有设置为允许空的时候就会出错,第二种方法比较灵活,在代码中可以自由添加,不过在多个按钮的复杂绑定中记得将之前的参数Clear掉。