前提介绍:服务器上网站IIS发布,服务器上安装了VS2008(亲,自带水晶报表的哟)。服务器版本2003。本地用VS2010采用push模式做的报表。
从开始到结束,尼玛,不知道牺牲了咱多少脑细胞。好吧,不多说了,就简单的说下遇到的问题及解决方案吧!
Question 1:将水晶报表放到服务器上,发现出现报表加载不出来
eg:先在服务器上安装CRRedist2005_x86_chs.msi 和CRRedist2005_x86.msi这几个文件,因为我们的服务器是Win2003,所以我选择了CRRedist2005_x86_chs.msi和CRRedist2005_x86.msi 这两个文件进行安装。用于自己的水晶报表为VS2010的,而服务器上市VS2008,所以需要在服务器上找到安装目录下的水晶报表DLL,分别为
还需要修改引用报表的页面的CrystalReportView 的版本,我这是version=10.5.3700.0
<%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %> OK, 通过一步一步的出现新问题,找寻新的解决方法,最终通过上述修改,得以加载出报表。
Quesion2: 水晶报表的按钮图片显示为红叉叉 eg: 1.直接将IIS中的aspnet_client文件夹复制到网站的根目录下
2.在c盘下找到aspnet_client文件夹将文件复制到网站的根目录下
OK,按钮图片出来了,可是呢,新的问题又出来了 哎 ,心寒呀
Question3:报表中的列表啥的都正常,唯独图表就显示为红叉叉
eg:在网络上寻求了多种方法,最终通过在web.config文件中添加如下代码解决了(我通过2中的代码解决了)
1:
<appSettings>
<add key="CrystalImageCleaner-AutoStart" value="true"/>
<add key="CrystalImageCleaner-Sleep" value="60000"/>
<add key="CrystalImageCleaner-Age" value="120000"/>
</appSettings>
2:
<httpHandlers>
<add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
</httpHandlers>
3:
<handlers>
<add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode"/>
<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</handlers>
OK,水晶报表的加载和现实都正常咯 可是,你以为就此玩完了吗?嘿。嘿。嘿 Question 4:我是做了一个页面统计列表功能,使用了iframe切入相应的报表进来,可是当我重复点击多个列表之后,问题出现了。由于每次引用报表,没有释放掉,导致数量达到系统设置后,就出现系统提示。 eg:网上提供的解决方案有多种,一种是通过进入cmd,修改参数,把电脑默认加载的报表次数调大,之后重启 另一种呢,也就是我选择用的,在页面写个方法,在你引用rpt文件之后不用了,释放掉。
private void Un_pageLoad(object sender,eventArgs e){
rptDoc.DisPose(); // rptDoc为ReportDocuemnt对象
} 结束语----水晶报表看着简单,可是开始着手之后,遇到的问题是咱无法想到的,还有就是想做好一个好看的水晶报表,还得好好努力学习,反正我就目前来说只能做点简单的东西。
来源:oschina
链接:https://my.oschina.net/u/206098/blog/299472