MVC4 Razor视图下使用iframe加载RDLC报表
MVC视图下默认是不支持服务器端控件的,所以,为了能够通过report viewer控件加载报表,需要在MVC视图添加嵌入的页面。
起初在stackoverflow上找到一个解决方案,见这里。不过这里的解决方案的一个最大缺陷是,不支持页面导航,也就是只能显示报表的第一页。
因为,原作者也说了,MVC页面下不支持导航控件的post back,也就无法正常工作。
看到评论里有人说iframe才可以解决多页报表的问题,于是试了试,最终成功搞定。
1.在项目中新建立WebForm1.aspx,并修改Global.asax.cs使得aspx页面可以直接访问。
routes.IgnoreRoute("WebForms/{weform}");
2.在需要加载报表的试图页面添加iframe定义,并添加对WebForm1.aspx的引用。
<iframe id="ifr" src="../WebForms/WebForm1.aspx" width="900px" height="700px" frameborder=0>
</iframe>
3.WebForm1.aspx中添加report viewer控件,并引用设计的报表。
<form id="Form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="uid" runat="server">
<ContentTemplate>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" AsyncRendering="false"
Height="800px" Width="900px" ShowFindControls="False"
ShowBackButton="False" PageCountMode="Actual"></rsweb:ReportViewer>
</ContentTemplate>
</asp:UpdatePanel>
</form>
4.后台代码的Page_Load方法中,添加数据源。
ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Reports/Report1.rdlc");
ReportDataSource reportDataSource = new ReportDataSource("DataSet1", yourdatasource);
ReportViewer1.LocalReport.DataSources.Add(reportDataSource);
ReportViewer1.LocalReport.Refresh();
5.现在报表就可以显示了,不过为了让报表可以接收页面的参数,需要添加一点代码。在视图页面的刷新方法中,根据不同的过滤条件,为iframe指定不同的url地址。
function reloadData() {
var fil = filterfield.value;
var urlstr = ifr.location.href + '?filter=' + fil;
ifr.window.location.href=urlstr;
}
6.在WebForm1.aspx的后台代码中,获取url参数。
string filter= Request.QueryString["filter"];
7.将参数应用到数据查询中,这样就可以通过页面查询更新报表的显示数据了。
MVC4 Razor视图下使用iframe加载RDLC报表的更多相关文章
- Android UI--自定义ListView(实现下拉刷新+加载更多)
Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就 ...
- iframe加载方案及性能
普通方法加载iframe 在onload之后加载iframe setTimeout来加载iframe 友好型iframe加载 转载地址:翻译文章-iframe异步加载技术及性能 英文原文:Iframe ...
- 转载:通过扩大IE使用内存,解决skyline在IE下模型不能加载的方法
转自:https://www.cnblogs.com/cannel/p/5261009.html 环境:skyline TerraExploere 6.6,win 10 sp1 64位,ie 11 情 ...
- 分页插件思想:pc加载更多功能和移动端下拉刷新加载数据
感觉一个人玩lol也没意思了,玩会手机,看到这个下拉刷新功能就写了这个demo! 这个demo写的比较随意,咱不能当做插件使用,基本思想是没问题的,要用就自己封装吧! 直接上代码分析下吧! 布局: & ...
- 判断iframe加载完成
一.js判断 var parFrame = document.getElementById("oIframe"); if(parFrame.attachEvent){ parFra ...
- 向下滚动页面加载图片的js
js代码 scroll.photo.js : window.imgscroll = { options: { target: null, //插入图片的目标位置 img_list: null, //图 ...
- MVC中在一个视图中,怎么加载另外一个视图?
在RazorView.cshtml视图: <!--在视图中调用无返回值的方法,视图中调用无返回值的方法,要加上大括号--> <!--在一个视图中,直接加载另外一个视图--> @ ...
- 页面滚动动态加载数据,页面下拉自动加载内容 jquery
<!DOCTYPE=html> <html> <head> < script src="js/jquery.js" type=" ...
- ie6,7下js动态加载图片不显示错误
ie6,7下js动态加载图片不显示错误 先描述一下出现这种匪夷所思bug的背景: 我在页面加载的时候加载一堆小缩略图,<a href="javascript:void(0);" ...
随机推荐
- 浪漫桃心的Android表白程序
本文转载于 huachao1001的专栏 几年前,看到过有个牛人用HTML5绘制了浪漫的爱心表白动画.地址在这:浪漫程序员 HTML5爱心表白动画.发现原来程序员也是可以很浪……漫…..的.那么在A ...
- Filter过滤器实现同一地址手机和电脑页面不同
最近做一个网站,客户要求在访问主域名的时候实现电脑访问时展示电脑页面,手机访问时展示h5的手机页面,这种需求的使用还是比较多的:尤其网站需要百度推广的时候,百度推广就要求同一域名下,手机访问时展示手机 ...
- Asp.net Core 部署到Azure.cn的一个小问题
前一段尝试在azure.cn上部署Aps.net Core未成功,报503错误!在网上查到是Azure.cn的问题,未能完美支持Asp.net Core! Asp.net Core发表正式版了,又尝试 ...
- 织梦DeDeCms列表分页和内容页分页错位解决办法
文章页分页代码在这里/include/arc.archives.class.php列表页分页/include/arc.listview.class.php 很多入门的站长会碰到这样的问题,织梦的通病, ...
- java直接输出Excel 页面实现下载
public String excelDomnload() throws Exception{ try{ /* String path = GlobalKeys.getFunctionConfig(& ...
- Js数学函数1
1.取模求余数 //1.JS取模求余 //输出 for (var i = 0; i < 20; i++) { if (i % 3 == 0) { documentHelper.WriteText ...
- 织梦dede自定义内容分页,datalist运用实例
在/plus文件夹中新建一个ceshi.php文件..<?php require(dirname(__FILE__)."/../include/common.inc.php" ...
- FckEditor组件的使用(新闻浏览发布页面)
FckEditor组件的使用 准备工作: 1)将FckEditor目录拷贝到网站根目录内. 2)在Web.config的AppSetting分支中添加如下的代码,并修改FckEditor的目录和上传文 ...
- iOS之多线程开发NSThread、NSOperation、GCD
原文出处: 容芳志的博客 欢迎分享原创到伯乐头条 简介iOS有三种多线程编程的技术,分别是:(一)NSThread(二)Cocoa NSOperation(三)GCD(全称:Grand Centr ...
- TalkingData Cocos2dx集成指南【最新】
续:最近终于腾出时间把TalkingData的Cocos版本好好折腾一下了,总感觉之前的各个版本在集成上都很蹩脚.给广大开发者带了很多困扰...“游戏正着急上线呢,哪还有时间去仔细看TalkingDa ...