在ASP.NET中使用水晶报表
来源:互联网 发布:fps训练软件 编辑:程序博客网 时间:2024/04/28 11:37
首先描述一下问题:因为客户的需要,把所有对于数据库的操作做成了存储过程,同时也存在带有输入参数的存储过程.客户要求将所有的信息都可以用水晶报表显示.我们都知道,要使用水晶报表我们就要使用数据源的.在这里,我们使用的数据源自然而然也就是存储过程了.当然,我们也是知道的,在ADO.NET的连接模式下,要给水晶报表设置数据源我们需要用到数据集文件,同时,也免去了我们设计水晶报表的时间.在使用数据集文件作为水晶报表的数据源时存在了这样一种情况,我们使用没有带输入参数的存储过程是很简单的,可是一旦我们要往存储过程里面传入参数,就出现了问题,我们不能像在winform当中那样给水晶报表实例化,原因是在ASP.NET 2005中水晶报表是一个文件,它没有附带的.cs文件.那么,我们如何解决这个问题呢?
解析:参照以前在winform里面设计的模式,我们可以想到,在winform中水晶报表可以实例化,数据集文件也是可以实例化的,可是在上述问题中是不能实现的,也就不能按照winform中的写法去写这些代码了.我们可以回想一下在ASP.NET下所用到的东西:aspx文件,aspx.cs文件,水晶报表,报表阅读器,报表源,数据集文件,存储过程.可见,报表源这个控件是在winform写法中没有的东西,所以我们可以利用它来实现我们的功能.
解决问题:首先,我们创建数据集文件,在创建时会出现创建向导,我们要选择"已存在的存储过程",然后选择我们要使用到的存储过程,完成数据集文件的创建.第二,创建水晶报表,按照向导指示,选择新建ADO.NET连接,浏览到我们刚刚创建好的数据集文件,根据需要文成水晶报表的设计.第三,创建页面文件,添加报表阅览器控件,这时软件会给出提示,没有设置报表源,我们不用管它,而是自己添加一个报表源控件.接下来的操作就是在页面文件中通过报表源控件给存储过程传入数值了.见代码:
string strsql1 = "exec USP_REP_Customer_Normal_By_Organization '" + Session["msg"].ToString() + "'";
DataSet dt=DBHelper.getDataSet(strsql1,"4sShopRegisterList");
//添加报表
CrystalReportSource1.ReportDocument.Load(Server.MapPath("../rtp/4SShopRegisterList.rpt"));
//设置数据源
CrystalReportSource1.ReportDocument.SetDataSource(dt.Tables["4sShopRegisterList"]);
//绑定数据源
CrystalReportSource1.DataBind();
//给浏览控件设置报表源
CrystalReportViewer.ReportSource=CrystalReportSource1;
//绑定
CrystalReportViewer.DataBind();
这样问题就解决了,要注意的是数据源文件不支持带有虚拟表的存储过程.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xm18love/archive/2009/12/26/5075949.aspx
- 在ASP.NET中使用水晶报表
- 在ASP.NET下使用水晶报表
- 水晶报表在ASP.NET中的使用
- 补: ASP.Net中使用水晶报表!
- ASP.NET中水晶报表的使用
- Asp.Net中使用水晶报表
- ASP.NET中水晶报表的使用
- ASP.NET中水晶报表的使用
- ASP.NET中水晶报表的使用
- ASP.NET中使用水晶报表(上)
- Asp.Net中使用水晶报表
- ASP.NET中水晶报表的使用
- ASP.NET中水晶报表的使用
- Asp.Net中使用水晶报表
- ASP.NET中水晶报表的使用
- Asp.Net中使用水晶报表
- Asp.Net中使用水晶报表
- Asp.Net中使用水晶报表 1
- wince 错误 Error: failed PB timebomb check
- Linux C编程一站式学习
- 关于H264,X264,DivX,Xvid的小知识(转载)
- oracle PROCEDURE 存储过程
- 5月9日上海书城PPT畅销图书作者讲座
- 在ASP.NET中使用水晶报表
- 2010软件设计师考试大纲
- 国学大师翟鸿燊《大智慧之沟通技巧》讲座经典语录摘
- SDK编程笔记 — 计时器篇
- .NET 2.0正式版中无刷新页面的开发
- 软件测试面试题
- 忙碌
- ubuntu命令行下上网方法-超帅
- JavaScript中的 escape,encodeURI,encodeURIComponent