网摘:
MICROSOFT REPORTVIEWER(微软报表)项目中的应用
一. 创建数据集
【添加】-【新建项】-【数据集】-【OrderReport.xsd】
创建好后【右键】-【添加】-【DataAdapter】弹出配置向导后创建对应的数据连接
(省略)-【下一步】
出现输入sql语句时可以把sql语句黏贴至内容中(支持视图),点击【查询生成器】-
查询出对应的结果-【下一步】-【完成】
数据集创建完成
二. 创建报表
【添加】-【新建项】-【报表】-【OrderReport.rdlc】
在VS上方工具栏中【报表】-【数据源】-弹出报表数据源-下拉选中
【OrderReport_******】-【添加到报表】-【确定】
在【工具箱】中拖动【表】到设计视图后出现表格,点击表格任意处,在上方与左方出
现灰色区域,在表格左上角【右键】-【属性】
弹出【表属性】窗口,在【数据集名称】下拉选中刚才添加的数据源
【OrderReport_******】-【确定】
在刚才所说的灰色的上方区域中可以添加【列】,合并【列】,在【表头】单元格中添
入你想加的字段
表格内【详细信息】区域是想从数据库中读取的数据,选中【详细信息】行中某一单元
格-【右键】-【表达式】弹出【表达式】窗口
在【类别】中有字段,数据集,函数等可以使用,例如【类别】-选中【字段】-最右边
【字段】出现刚才数据中所要查询的字段-双击【*****(OrderCode)】
-【确定】,反复操作完成所有字段的表达式
报表创建完成
三. 创建页面
过程省略
在【工具箱】-【报表】-拖动【MicrosoftReportViewer】到页面中,在对应的事件
中插入下面的代码
protected void btnToSearch_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt = bllo.GetOrderReport();
Microsoft.Reporting.WebForms.ReportDataSource Ds = new
ReportDataSource("OrderReport_******", dt);
this.ReportViewer1.LocalReport.ReportPath =
@"Report\OrderReport.rdlc";
ReportViewer1.LocalReport.DisplayName = "统计表";
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(Ds);
ReportViewer1.DataBind();
}
完成
-----------------------------------------------------------------------------------------------------------------
ReportViewer报表实现带参数存储过程创建报表以及为rdlc传递参数
先来看一个表结构
Create Table Test
(
PID varchar(100),
PName varchar(100),
PQty int,
PPrice money
)
创建一个存储过程
CREATE PROCEDURE procTest
@condition varchar(1000)
AS
DECLARE @sql varchar(8000)
SET @sql = 'SELECT PID, PName, PQty FROM Test '
IF @condition <> ''
SET @sql = @sql + @condition
EXEC(@sql)
这里需要说明的是,我看MSDN和网上的例子使用的都是直接SELECT语句带参数的存储过程,但很多时候都需要通过构造
SQL语句进行查询,所以我这里主要讲的是如何使用EXEC这样构造SQL语句的存储过程。
建一 ASP.NET WebApplication,在App_Code目录(没有的话可以右键选择 Add ASP.NET Folder新建此目录)里增加一个新
项,并选择DataSet,填写DataSet名,点击确定。
在打开的窗口中右键选择Add再选择TableAdapter,弹出TableAdapter连接向导对话框,连接数据库(这个过程略),选择 Use
existing stored procedrues(已存在的存储过程),点击下一步,选择procTest,直接点完成,这样一个TableAdapter算是建好
了。
如果那个存储过程直接是SELECT PID, PName, PQty FROM Test 那建好的TableAdapter就会直接把PID, PName, PQty 当作
列显示出来,但用的是EXEC所以要手工将PID, PName, PQty 在右键->新建Column里把这几个加进去,加完后,存盘,然后
新建一个Report文件,新建完后,在Report窗口左侧会把刚刚建的 TableAdapter显示出来,把PID, PName, PQty 列拖到
Report窗口中,布局自己搞定,存盘。
打开Default.aspx文件(自己新建一个都没所谓),在Toolbox里的Data中将ReportView控件拖到窗口上,选择刚刚新建的Report
文件,然后再拖一个Textbox和一个Button,双击Button打开Code窗口填写代码
view plaincopy to clipboardprint?
protected void Button1_Click(object sender, EventArgs e)
{
string condition = "";
if ( Textbox1.Text.Trim() != "" )
{
string condition = "PID = '" + Textbox1.Text.Trim() + "'";
}
//清除数据源原参数
ObjectDataSource1.SelectParameters.Clear();
//增加数据源参数
ObjectDataSource1.SelectParameters.Add("condition", condition);
//让ReportView重新加载数据源
ReportViewer1.LocalReport.Refresh();
}
protected void Button1_Click(object sender, EventArgs e)
{
string condition = "";
if ( Textbox1.Text.Trim() != "" )
{
string condition = "PID = '" + Textbox1.Text.Trim() + "'";
}
//清除数据源原参数
ObjectDataSource1.SelectParameters.Clear();
//增加数据源参数
ObjectDataSource1.SelectParameters.Add("condition", condition);
//让ReportView重新加载数据源
ReportViewer1.LocalReport.Refresh();
}