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报表的更多相关文章

  1. Android UI--自定义ListView(实现下拉刷新+加载更多)

    Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就 ...

  2. iframe加载方案及性能

    普通方法加载iframe 在onload之后加载iframe setTimeout来加载iframe 友好型iframe加载 转载地址:翻译文章-iframe异步加载技术及性能 英文原文:Iframe ...

  3. 转载:通过扩大IE使用内存,解决skyline在IE下模型不能加载的方法

    转自:https://www.cnblogs.com/cannel/p/5261009.html 环境:skyline TerraExploere 6.6,win 10 sp1 64位,ie 11 情 ...

  4. 分页插件思想:pc加载更多功能和移动端下拉刷新加载数据

    感觉一个人玩lol也没意思了,玩会手机,看到这个下拉刷新功能就写了这个demo! 这个demo写的比较随意,咱不能当做插件使用,基本思想是没问题的,要用就自己封装吧! 直接上代码分析下吧! 布局: & ...

  5. 判断iframe加载完成

    一.js判断 var parFrame = document.getElementById("oIframe"); if(parFrame.attachEvent){ parFra ...

  6. 向下滚动页面加载图片的js

    js代码 scroll.photo.js : window.imgscroll = { options: { target: null, //插入图片的目标位置 img_list: null, //图 ...

  7. MVC中在一个视图中,怎么加载另外一个视图?

    在RazorView.cshtml视图: <!--在视图中调用无返回值的方法,视图中调用无返回值的方法,要加上大括号--> <!--在一个视图中,直接加载另外一个视图--> @ ...

  8. 页面滚动动态加载数据,页面下拉自动加载内容 jquery

    <!DOCTYPE=html> <html> <head> < script src="js/jquery.js" type=" ...

  9. ie6,7下js动态加载图片不显示错误

    ie6,7下js动态加载图片不显示错误 先描述一下出现这种匪夷所思bug的背景: 我在页面加载的时候加载一堆小缩略图,<a href="javascript:void(0);" ...

随机推荐

  1. 浪漫桃心的Android表白程序

    本文转载于  huachao1001的专栏 几年前,看到过有个牛人用HTML5绘制了浪漫的爱心表白动画.地址在这:浪漫程序员 HTML5爱心表白动画.发现原来程序员也是可以很浪……漫…..的.那么在A ...

  2. Filter过滤器实现同一地址手机和电脑页面不同

    最近做一个网站,客户要求在访问主域名的时候实现电脑访问时展示电脑页面,手机访问时展示h5的手机页面,这种需求的使用还是比较多的:尤其网站需要百度推广的时候,百度推广就要求同一域名下,手机访问时展示手机 ...

  3. Asp.net Core 部署到Azure.cn的一个小问题

    前一段尝试在azure.cn上部署Aps.net Core未成功,报503错误!在网上查到是Azure.cn的问题,未能完美支持Asp.net Core! Asp.net Core发表正式版了,又尝试 ...

  4. 织梦DeDeCms列表分页和内容页分页错位解决办法

    文章页分页代码在这里/include/arc.archives.class.php列表页分页/include/arc.listview.class.php 很多入门的站长会碰到这样的问题,织梦的通病, ...

  5. java直接输出Excel 页面实现下载

    public String excelDomnload() throws Exception{ try{ /* String path = GlobalKeys.getFunctionConfig(& ...

  6. Js数学函数1

    1.取模求余数 //1.JS取模求余 //输出 for (var i = 0; i < 20; i++) { if (i % 3 == 0) { documentHelper.WriteText ...

  7. 织梦dede自定义内容分页,datalist运用实例

    在/plus文件夹中新建一个ceshi.php文件..<?php require(dirname(__FILE__)."/../include/common.inc.php" ...

  8. FckEditor组件的使用(新闻浏览发布页面)

    FckEditor组件的使用 准备工作: 1)将FckEditor目录拷贝到网站根目录内. 2)在Web.config的AppSetting分支中添加如下的代码,并修改FckEditor的目录和上传文 ...

  9. iOS之多线程开发NSThread、NSOperation、GCD

    原文出处: 容芳志的博客   欢迎分享原创到伯乐头条 简介iOS有三种多线程编程的技术,分别是:(一)NSThread(二)Cocoa NSOperation(三)GCD(全称:Grand Centr ...

  10. TalkingData Cocos2dx集成指南【最新】

    续:最近终于腾出时间把TalkingData的Cocos版本好好折腾一下了,总感觉之前的各个版本在集成上都很蹩脚.给广大开发者带了很多困扰...“游戏正着急上线呢,哪还有时间去仔细看TalkingDa ...