设为首页 收藏本站
查看: 1820|回复: 0

[经验分享] Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示图片)

[复制链接]

尚未签到

发表于 2015-9-26 07:02:47 | 显示全部楼层 |阅读模式
  上篇贴子讲述了如何显示报表的数据内容,但这样显示出来的报表有个问题,那就是报表中的图片无法显示(如报表的logo,Chart图片等)。
网上有贴子讲述此问题,但在Sharepoint2010中貌似有些差异。我们在报表的图片位置查看图片链接时可以看到类似如下内容:
http://sharepoint-dev:2010/sites/StarCompany/_layouts/Solutions/CrystalImageHandler.aspx?dynamicimage=cr_tmp_image_a6f5a0d8-80f9-4a2b-a04b-169a49e10a53.png
也就是说,Crystal Report使用到了CrystalImageHandler.aspx来显示图片,因为在我们的Sharepoint网站中没有此Handler,所以网上做法是使用
  步骤一在Sharepoint项目的Layout对应目录下创建一个CrystalImageHandler.aspx
  CrystalImageHandler.aspx内容如下


<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<%@ Register Assembly="CrystalDecisions.CrystalReports.Engine, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<%@ Register Assembly="CrystalDecisions.Shared, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CrystalImageHandler.aspx.cs" Inherits="StarCompanySpSolutions.Layouts.Solutions.CrystalImageHandler" DynamicMasterPageFile="~masterurl/default.master" %>
<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server"></asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server"></asp:Content>
<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">Application Page</asp:Content>
<asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" >My Application Page</asp:Content>  
  CrystalImageHandler.aspx.cs内容如下
  


public partial class CrystalImageHandler : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // get the Crystal Reports temporary file name
        String strtempImagePath = Request.QueryString["dynamicimage"];
        if (strtempImagePath != null)
        {
            // send the temporary image file
            SPWeb thissite = SPControl.GetContextWeb(Context);
            String strsitename = thissite.Site.HostName;
            int iport = thissite.Site.Port;
            String strport = Convert.ToString(iport);
            Response.TransmitFile(@"C:\WINDOWS\Temp\cr_tmp_image__" +
                     strsitename + strport + "\\" + strtempImagePath);
        }
    }
}  此方法作了偿试,但问题是在Sharepoin2010中,CrystalReport并没有在C:\WINDOWS\Temp\目录下创建临时文件,所以使用Response.TransmitFile(@"C:\WINDOWS\Temp\cr_tmp_image__" +                      strsitename + strport + "\\" + strtempImagePath);在Sharepoint2010中行不通。手功创建的Handler将找不到Crystal Report动态创建的临时图片文件。于是进一步偿试
  
  步骤二:修改Webconfig文件。修改你自己的Sharepoint网站的Webconfig文件
  在其<system.web>的<httpHandlers>节中加入如下内容:


<httpHandlers>
      <add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
      <add verb="*" path="GenerateImage.ashx" type="GenerateDynamicImage" />
    </httpHandlers>  
  在<system.webServer>的<handlers />节中加入如下内容:


<handlers>
<add name="CrystalImageHandler.aspx" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode" />
</handlers>  
  保存修改,重启网站,使刚才的修改生效,在网站中打开水晶报表,终于看到了报表中的图片内容以及图表内容。
  注:在修改Webconfig时,请
  1、保存好修改前的Webconfig文件。
  2、要检查你自己的Crystal report版本,本例使用的Version号是13.0.2000.0,而你的代码可能要随着你自己的Crystal Reprot版本号要作适当修改
  
  
相关链接:Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 一)
相关链接:Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)
相关链接:Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(报表登录处理)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118823-1-1.html 上篇帖子: Visual Studio 2008试用版和SharePoint 2007开发环境的Emule资源 下篇帖子: 通过代码解决SharePoint列表视图权限分配问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表