开发自己的SQL2005报表查看SharePoint WebPart(二)

在(一)中,已经完成了一个sharepoint Web part的开发和部署。但是我们的web part还没有任何功能。现在,我们要开始将SQL reporting的报表显示功能加进来了。
访问SQL reporting报表有很多方法,这里我们选用的是调用Web service的方式。
在工程中增加对SQL reporting service的引用, http://ctc-bar:81/ReportServer/reportservice.asmx(ctc-bar:81是报表服务器名称和段口号)
为了简化对报表服务器的调用,我们新建一个ReportAdapter类负责对web service的调用。
using System;
using System.Collections.Generic;
using System.Text;

namespace BARreportWebPart
{
    public class ReportAdapter
    {
        ReportingServer.ReportingService ReportSvr = null;
        string reportServerURL = null;
        string reportPath = null;
        string format = "HTML4.0";
        string zoom = "100";
        string deviceInfo = "<DeviceInfo></DeviceInfo>";
        string encoding = null;
        string mimeType = null;
        ReportingServer.ParameterValue[] outParameters = null;
        ReportingServer.Warning[] warnings = null;
        string[] streamIDs = null;

        public ReportAdapter(string serverURL,string path)
        {
            reportServerURL = serverURL;
            reportPath = path;
            ReportSvr = new ReportingServer.ReportingService();
            ReportSvr.Url = reportServerURL;
            ReportSvr.Credentials = System.Net.CredentialCache.DefaultCredentials;
        }

        public ReportingServer.ReportParameter[] GetParameters()
        {
            return ReportSvr.GetReportParameters(reportPath, null, false, null, null);
        }

        public byte[] RenderReport(ReportingServer.ParameterValue[] parameterValues)
        {
            return ReportSvr.Render(reportPath, format, null, deviceInfo, parameterValues, null, null, out encoding, out mimeType, out outParameters, out warnings, out streamIDs);
        }
    }
}

这个类的构造函数用来指定要访问的报表serverURL是服务器的地址,path是报表的路径
GetParameters()可以返回报表的参数,我们可以自己构造参数输入的UI控件。
RenderReport用来返回查询报表的结果。

然后,我们在web part的render方法中调用ReportAdapter来查询报表
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;

namespace BARreportWebPart
{
    public class BARreportWebPart : WebPart
    {
        public BARreportWebPart()
        {
        }

        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            string reportServerURL = "http://ctc-bar:81/ReportServer/ReportService.asmx";
            string reportPath = "/BARreports/EBCdetailList";

            ReportAdapter rsAdapter = new ReportAdapter(reportServerURL, reportPath);
            ReportingServer.ReportParameter[] parameters = rsAdapter.GetParameters();
            ReportingServer.ParameterValue[] parameterValues = null;
            if (parameters.Length > 0)
            {
                parameterValues = new ReportingServer.ParameterValue[parameters.Length];
                for (int i = 0; i < parameters.Length; i++)
                {
                    parameterValues[i] = new ReportingServer.ParameterValue();
                    parameterValues[i].Name = parameters[i].Name;
                    parameterValues[i].Label = parameters[i].Prompt;
                }
                parameterValues[0].Value = "2007-1-1";
                parameterValues[1].Value = "2007-3-1";
            }
            System.Text.Encoding enc = System.Text.Encoding.UTF8;
            byte[] result = rsAdapter.RenderReport(parameterValues);
            string htmlResult = enc.GetString(result);
            //htmlResult = htmlResult.Replace(reportServerURL.Replace("/ReportService.asmx", "?"), "http://" & Request("SERVER_NAME") & Request("SCRIPT_NAME") & "?Report=");
            writer.Write(htmlResult);
        }
     }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值