sharepoint 2010 使用水晶报表的完全方案。

出于对水晶热爱和熟悉

在sharepoint的项目中我依然选择了使用水晶报表,设想之中肯定会有很多困难。出于对VS和sharepoint都很熟的自信,我也提前做预案,废话不说开始。

在水晶报表嵌入sharepoint 如下是第一问题需要安装 SAP水晶报表的组件。

第二个问题,报表文件名为空,则直接修改代码

解决方法

  CrystalReportSource1.Report.FileName = getFile;
            //CrystalReportSource1.ReportDocument.Load("/_layouts/F_WPart_CR/" + RName);
            CrystalReportSource1.ReportDocument.Load(getFile);

在webpart中开发部署成功了,问题随之而来。

首先要在sharepoint目录下增加 aspnet_client\system_web\2_0_50727\crystalreportviewers13

                                                          aspnet_client\system_web\4_0_30319\crystalreportviewers13

以下问题一,空白,

解决方案:

步骤一在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);

        }

    }

}

 

步骤二:修改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 >

 

我做了以上操作没有成功,项目周期时间不多了,不允许我再做研究。出大招预案一启用,

在sharepoint webpart项目中的layouts 创建ApplicationPage1.aspx

aspx代码

<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
     请选项报表<asp:DropDownList ID="CRDDL" runat="server">
                 <asp:ListItem Value="crAgeStructure.rpt">年龄结构报表</asp:ListItem>
        <asp:ListItem Value="crEduStructure.rpt">学历结构报表</asp:ListItem>
        <asp:ListItem Value="crPersonStructure.rpt">人员结构</asp:ListItem>
        <asp:ListItem Value="crStaffIncrease.rpt">新增职工报表</asp:ListItem>
        <asp:ListItem Value="crStaffReduce.rpt">职工流失率</asp:ListItem>
        <asp:ListItem>开发中</asp:ListItem>
    </asp:DropDownList>

    <CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
    </CR:CrystalReportSource>
    <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" />

</asp:Content>


CS代码

string getFile = Server.MapPath("/_layouts/F_WPart_CR/" + RName);
            CrystalReportSource1.Report.FileName = getFile;
            //CrystalReportSource1.ReportDocument.Load("/_layouts/F_WPart_CR/" + RName);
            CrystalReportSource1.ReportDocument.Load(getFile);
            CrystalReportViewer1.ReportSource = CrystalReportSource1;
            CrystalReportViewer1.DataBind();


去iis sharepoint 80 下找到虚拟目录运行

 

怎么样看上去简单吧,用了我3个日日夜夜。还有很多方案没有测试,要结项了。

记住重要一点哦,水晶报表文件发到layouts文件下!

热爱sharepoint 和BI 吗? 可以一块聊聊

 

qq交流群:212099235
问题二,图表不显示

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值