|
介绍:
这篇文章是前天看园子里给的一个链接,具体是谁的我忘记了,只记得http://www.codeproject.com/aspnet/ReportViewer.asp这个地址被贴了出来,然后说因为什么原因就没翻译完。我后来看了下正好对自己有用,因为公司里RS的东西有人在做,而楼下光电部门的BS需求也经常有,并且早就知道有这个东西只是一直没时间研究,正好找到这个文章,于是就好好的研究了一下午,先翻译一下,然后再补充点心得。
翻译的过程中尽量本地化了一下,不过保留了原文作者的意思。如果有翻译不贴切的地方请各位朋友批评指正。
在网上有很多关于SqlServer RS 的服务模式(Server Mode),而我在研究本地模式(Local Mode)确实用了很长的时间,尤其还是有参数调用的时候。
之所以要用本地模式而不是服务器模式,是因为服务模式的客户端每次请求一个报表的时候,服务器都要把数据组织成报表然后发送到客户端,虽然这样子安全些,但是巨型报表从服务器到浏览器的传输会降低其性能。
所以这个文章是描述如何组织报表并且用ASP.NET2.0的ReportViewer控件读取出来的,这里我们选用的就是本地模式,并且是使用带参数的存储过程。我所使用的是ASP.NET2.0,VisualStudio2005,还有SQLServer2005加Application Block。如果你没有Microsoft Application Block这个工具,那么就请把示例中通过SQL Helper调用存储过程的代码换成SQL Command的就可以了。
在这里我们选用Northwind数据库,我们的示例展现给用户的就是让用户从下拉列表里选择货品名称然后在报表里筛选出信息来。
第一步,创建带参数的存储过程
ALTER PROCEDURE ShowProductByCategory(@CategoryName nvarchar(15) )
AS
SELECT Categories.CategoryName, Products.ProductName,
Products.UnitPrice, Products.UnitsInStock
FROM Categories INNER JOIN Products ON
Categories.CategoryID = Products.CategoryID
WHERE CategoryName=@CategoryName
RETURN
第二步,使用DataSet设计器创建一个DataSet下的DataTable
在解决方案管理器界面里,右键App_Code这个文件佳,选择”Add New Item”。在弹出的对话框里选择”DataSet”,给它起个名,比如DataSetProducts.xsd,然后点击”Add”按钮。这时候TableAdapter配置工具会自动出现,如果没有出现或者误将其关闭了的话,在DataSet设计器的任何一个地方点击鼠标右键,选择Add,然后再选择TableAdapter这个工具就会再次出现。根据向导来建立DataTable,在出现的界面中分别选择”User existing stored procedures”作为命令类型然后指定”ShowProductByCategory”作为Select命令。
在第一步创建的存储过程在第二步里就变成了一个DataTable,而报表数据就是通过这个DataTable提供的。 [1] [2] [3] [4] [5] [6] 下一页 |