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.将参数应用到数据查询中,这样就可以通过页面查询更新报表的显示数据了。

最新文章

  1. OCP考点实战演练02-日常维护篇
  2. T-SQL Recipes之Customized Database Objects
  3. Qt之Dialog\widget\ mainwindow的区别和布局管理器 &amp; 分裂器的区别
  4. Web API 入门系列- 从一个示例开始
  5. Android 设计中的.9.png
  6. 释放Linux系统预留的硬盘空间【转】
  7. Clean Code第二章&lt;命名&gt;
  8. Windows 10 响应式设计和设备友好的开发
  9. 在树莓派1B上编译安装lnmp服务器
  10. c#中常用的异常类型
  11. [WPF]程序全屏
  12. Swoole笔记(五)
  13. 你不可不知的Eclipse快捷键
  14. android点击返回键,如何做到不destory当前activity,只是stop。重新返回该activity的 时候可以直接使用,不需要创建新的activity实例
  15. sass 工具库
  16. C# 远程服务器 安装、卸载 Windows 服务,读取远程注册表,关闭杀掉远程进程
  17. contenteditable设置元素可编辑
  18. 【Oracle】RAC 10.2.0.1升级10.2.0.5
  19. 【BZOJ】4311: 向量(线段树分治板子题)
  20. 【Oracle】Windows定时计划每天备份数据库

热门文章

  1. 【开源java游戏框架libgdx专题】-09-动画的使用
  2. WEB前端开发规范文档(转)
  3. PHP 关于文件操作的简单介绍
  4. Word复制和替换实例
  5. Xcode换版本或者改名字后无法使用simpholders2
  6. mysql for linux 数据库的安装过程
  7. C#.net 货币格式转换
  8. span宽度高度设置
  9. Llinux-apache安装
  10. 小tip:我是如何初体验uglifyjs压缩JS的