分几步进行,第一步要实现:IReportServerCredentials 接口
第二步:拖入ReportViewer控件
第三步:进行报表传参控制。具体如下图描述。。。。代码部分参考下附件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TajimaOA.UI;
using System.Data;
using Microsoft.Reporting.WebForms;
namespace TajimaOA.UI.BISSRSViewer
{
public partial class BISSRSViewer : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//string l_ReportServerUrl = System.Web.Configuration.WebConfigurationManager.AppSettings["BIReportServerUrl"];//获取报表服务地址
if (!IsPostBack)
{
string l_CompanyID = this.Request["CompanyID"];
string l_DepartmentID = this.Request["DepartmentID"];
string l_EmployeeID = this.Request["EmployeeID"];
string l_IsGetCurrentUserID = this.Request["GetUser"];
//项目
string l_ProjectID = this.Request["ProjectID"];//2014-04-18 add by WesChen 项目ID
string l_ProjectState = this.Request["ProjectState"];//2014-04-18 add by WesChen 项目状态
//任务
string l_TaskID = this.Request["TaskID"];//2014-04-18 add by WesChen 项目任务ID
string l_TaskState = this.Request["TaskState"];//2014-04-18 add by WesChen 项目任务ID
string l_TaskStponeCode = this.Request["TaskStponeCode"];//2014-04-18 add by WesChen 项目任务延期编号
string l_ReportCode = this.Request["ReportCode"];
TajimaOA.UI.Areas.BI.Controllers.SSRSReport.SSRSManagerController l_ServiceClient = new Areas.BI.Controllers.SSRSReport.SSRSManagerController();
DataTable l_dt = l_ServiceClient.GetReportSettingByReportCode(l_ReportCode);
if (l_dt == null || l_dt.Rows.Count == 0)
{
}
else
{
string l_ReportServerUrl = l_dt.Rows[0]["ServerUrl"].ToString();
string l_ReportFolder = l_dt.Rows[0]["FolderCode"].ToString();
string l_Report = l_dt.Rows[0]["ReportCode"].ToString();
string l_SSRSUser = System.Web.Configuration.WebConfigurationManager.AppSettings["BISSRS-User"];//获取凭证用户名
string l_SSRSPassword = System.Web.Configuration.WebConfigurationManager.AppSettings["BISSRS-Password"];//获取凭证口令
string l_SSRSDomainName = System.Web.Configuration.WebConfigurationManager.AppSettings["BISSRS-DomainName"];//获取凭证域
BI_RptViewer.ServerReport.ReportServerCredentials = new CustomReportCredentials(l_SSRSUser, l_SSRSPassword, l_SSRSDomainName);
BI_RptViewer.ServerReport.ReportServerUrl = new Uri(l_ReportServerUrl.Trim());
BI_RptViewer.ServerReport.ReportPath = l_ReportFolder + l_Report;
BI_RptViewer.ShowBackButton = true;
BI_RptViewer.ShowPrintButton = true;
//2014-03-05 add by WesChen 增加报表参数
List<ReportParameter> l_ParList = new List<ReportParameter>();
if (l_IsGetCurrentUserID == "Y")
{
ReportParameter l_RptPar_CurrentUserID = new ReportParameter();
l_RptPar_CurrentUserID.Name = "CurrentUserID";
Guid l_CurrentUserID = TajimaOA.UI.Common.ComonMethods.GetCurrentUserID();//当前登陆用户ID
l_RptPar_CurrentUserID.Values.Add(l_CurrentUserID.ToString());
l_ParList.Add(l_RptPar_CurrentUserID);
}
if (!string.IsNullOrEmpty(l_CompanyID))
{
ReportParameter l_RptPar_CompanyID = new ReportParameter();
l_RptPar_CompanyID.Name = "CompanyID";
l_RptPar_CompanyID.Values.Add(l_CompanyID);
l_ParList.Add(l_RptPar_CompanyID);
}
if (!string.IsNullOrEmpty(l_DepartmentID))
{
ReportParameter l_RptPar_DepartmentID = new ReportParameter();
l_RptPar_DepartmentID.Name = "DepartmentID";
l_RptPar_DepartmentID.Values.Add(l_DepartmentID);
l_ParList.Add(l_RptPar_DepartmentID);
}
if (!string.IsNullOrEmpty(l_EmployeeID))
{
ReportParameter l_RptPar_EmployeeID = new ReportParameter();
l_RptPar_EmployeeID.Name = "EmployeeID";
l_RptPar_EmployeeID.Values.Add(l_EmployeeID);
l_ParList.Add(l_RptPar_EmployeeID);
}
//-------------------------------------------
//2014-04-18 add by WesChen 项目ID
if (!string.IsNullOrEmpty(l_ProjectID))
{
ReportParameter l_RptPar_ProjectID = new ReportParameter();
l_RptPar_ProjectID.Name = "ProjectID";
l_RptPar_ProjectID.Values.Add(l_ProjectID);
l_ParList.Add(l_RptPar_ProjectID);
}
//2014-04-18 add by WesChen 项目状态
if (!string.IsNullOrEmpty(l_ProjectState))
{
ReportParameter l_RptPar_ProjectState = new ReportParameter();
l_RptPar_ProjectState.Name = "ProjectState";
l_RptPar_ProjectState.Values.Add(l_ProjectState);
l_ParList.Add(l_RptPar_ProjectState);
}
//------------------------------------------
//2014-04-18 add by WesChen 项目任务ID
if (!string.IsNullOrEmpty(l_TaskID))
{
ReportParameter l_RptPar_ProjectTaskID = new ReportParameter();
l_RptPar_ProjectTaskID.Name = "ProjectTaskID";
l_RptPar_ProjectTaskID.Values.Add(l_TaskID);
l_ParList.Add(l_RptPar_ProjectTaskID);
}
//2014-04-18 add by WesChen 项目任务ID
if (!string.IsNullOrEmpty(l_TaskState))
{
ReportParameter l_RptPar_TaskState = new ReportParameter();
l_RptPar_TaskState.Name = "TaskState";
l_RptPar_TaskState.Values.Add(l_TaskState);
l_ParList.Add(l_RptPar_TaskState);
}
//2014-04-18 add by WesChen 项目任务是否延期
if (!string.IsNullOrEmpty(l_TaskStponeCode))
{
ReportParameter l_RptPar_TaskStponeCode = new ReportParameter();
l_RptPar_TaskStponeCode.Name = "TaskStponeCode";
l_RptPar_TaskStponeCode.Values.Add(l_TaskStponeCode);
l_ParList.Add(l_RptPar_TaskStponeCode);
}
if (l_ParList.Count > 0)
{
BI_RptViewer.ServerReport.SetParameters(l_ParList);
}
}
}
}
}
[Serializable]
public class CustomReportCredentials : Microsoft.Reporting.WebForms.IReportServerCredentials
{
// local variable for network credential.
private string _UserName;
private string _PassWord;
private string _DomainName;
public CustomReportCredentials(string UserName, string PassWord, string DomainName)
{
_UserName = UserName;
_PassWord = PassWord;
_DomainName = DomainName;
}
public System.Security.Principal.WindowsIdentity ImpersonationUser
{
get
{
return null; // not use ImpersonationUser
}
}
public System.Net.ICredentials NetworkCredentials
{
get
{
// use NetworkCredentials
return new System.Net.NetworkCredential(_UserName, _PassWord, _DomainName);
}
}
public bool GetFormsCredentials(out System.Net.Cookie authCookie, out string user, out string password, out string authority)
{
// not use FormsCredentials unless you have implements a custom autentication.
authCookie = null;
user = password = authority = null;
return false;
}
}
}
http://www.flybi.net/question/2835
-
Spring 4 官方文档学习(十三)集成其他web框架
重点是通用配置,非常建议看一下!有助于理解Spring的ApplicationContext与Servlet Container的关系! 1.介绍 Spring Web Flow SWF目标是成为we ...
-
使用Apache CXF和Spring集成创建Web Service(zz)
使用Apache CXF和Spring集成创建Web Service 您的评价: 还行 收藏该经验 1.创建HelloWorld 接口类 查看源码 打印? 1 package ...
-
5.把报表集成到Web应用程序中-生成网页和导出两种方式
转自:https://wenku.baidu.com/view/104156f9770bf78a65295462.html 第四部分,把报表集成到Web应用程序中 用MyEclipse新建一个Web ...
-
Spark与Spring集成做web接口
需要实现的功能: 写访问spark的接口,也就是从web上输入网址就能把我们需要的信息通过提交一个job然后返回给我们json数据. 成果展示: 通过url请求,然后的到一个wordcount的jso ...
-
SignalR SelfHost实时消息,集成到web中,实现服务器消息推送
先前用过两次SignalR,但是中途有段时间没弄了,今天重新弄,发现已经忘得差不多了,做个笔记! 首先创建一个控制台项目Nuget添加引用联机搜索:Microsoft.AspNet.SignalR.S ...
-
SharePoint RBS 安装(集成Office Web Apps)
前言 本文完全原创,转载请说明出处,希望对大家有用. 本篇博客是个人总结,一方面以便日后查看,另一方面希望能为其他人提供一些便利. 阅读目录 安装RBS 为多个内容数据库开启RBS 正文 目的:在Sh ...
-
Python Tornado集成JSON Web Token方式登录
本项目github地址 前端测试模板如下: Tornado restful api 项目 项目结构如下: 项目组织类似于django,由独立的app模块构成. 登录接口设计 模式:post -> ...
-
.Net Core集成Office Web Apps(二)
想要使用OWA需要一台单独的服务器来部署,这对很多人造成困难.而写该文的目的是为了分享有个OWA的集成步骤,它不仅适用于.Net开发环境,其它语言也是一样的,只要实现了需要的服务接口.并且该文不局限与 ...
-
.Net Core集成Office Web Apps(一)
最近开始学习.Net Core,并使用Visual Studio Code工具来开发.感觉开发起来特别的方便,但是有个头疼的地方:许多的类库被修改了,一时半会儿还熟悉不了,需要查阅官方API... M ...
随机推荐
-
linux操作系统的分类及解释
什么是Linux? 也许很多人会不屑的说,Linux不就是个操作系统么.错!Linux不是一个操作系统,严格来讲,Linux只是一个操作系统中的内核.内核是什么?内核建立了计算机软件与硬件之间通讯的平 ...
-
用户界面线程AfxBeginThread的使用
用户界面线程在运行时会有一个窗口界面和与其相对应的窗口函数,所以它可以通过响应消息来和用户进行交互. AfxBeginThread 函数原型如下: CWinThread *AfxBeginThread ...
-
pipe----管道----fork
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h&g ...
-
想从事IT行业的你,一定看看这篇文章
很多想从事IT行业的小伙伴都会问: 我该如何学习技术? 我应该选择什么样的方向来深入学习并以此来就业? 如何证明自己的技术很牛? 什么是程序员的核心竞争力? 如何成为一名优秀的工程师? 对于这些疑问, ...
-
[翻译] 编写高性能 .NET 代码--第二章 GC -- 减少分配率, 最重要的规则,缩短对象的生命周期,减少对象层次的深度,减少对象之间的引用,避免钉住对象(Pinning)
减少分配率 这个几乎不用解释,减少了内存的使用量,自然就减少GC回收时的压力,同时降低了内存碎片与CPU的使用量.你可以用一些方法来达到这一目的,但它可能会与其它设计相冲突. 你需要在设计对象时仔细检 ...
-
Node.js 加密
稳定性: 2 - 不稳定; 正在讨论未来版本的 API 改进,会尽量减少重大变化.详见后文. 使用 require('crypto') 来访问这个模块. 加密模块提供了 HTTP 或 HTTPS 连接 ...
-
tomcat配置context的crossContext属性应用案例
在tomcat下,context元素有一个crossContext属性,如果配置为true,则可以实现在同一个tomcat下的多个web应用之间实现ServletContext对象访问.该属性主要用于 ...
-
美团codeM预赛A轮 倒水
[编程题] 倒水 时间限制:1秒 空间限制:32768K 有一个大水缸,里面水的温度为T单位,体积为C升.另有n杯水(假设每个杯子的容量是无限的),每杯水的温度为t[i]单位,体积为c[i]升. 现在 ...
-
python3 拼接字符串的7种方法
1.直接通过(+)操作符拼接 1 2 >>> 'Hello' + ' ' + 'World' + '!' 'Hello World!' 使用这种方式进行字符串连接的操作效率低下,因为 ...
-
人脸识别-<;转>;
人脸检测库libfacedetection介绍 libfacedetection是于仕琪老师放到GitHub上的二进制库,没有源码,它的License是MIT,可以商用.目前只提供了windows 3 ...