方法一在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" %>
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文件
在其Handler节加入如下内容:
保存修改,重启网站,使刚才的修改生效,在网站中打开水晶报表,终于看到了报表中的图片内容。
--
--
最新评论