ReportViewer在IE11后打印按钮就存在兼容问题,火狐,谷歌也存在打印按钮显示的兼容性问题,本资料就是解决ReportViewer打印按钮显示的问题,
通过自己写脚本添加到DOM里面让所有浏览器都能显示打印和自定义的按钮出来!
参考网络资料

最近在使用Report Service做报表,客户要求报表要以表格形式和图形形式显示,当时我想直接修改ReportViewer的工具栏。于是上网查了相关资料,发现这样方案不太可能,就算能够动态增加按钮,但是对于后台处理也比较麻烦,从通用性上考虑也不太乐观。

后来看到客户端的代码,如下:

ReportViewer发到客户端其实就是div加table。突然萌生了一种想法,就是通过js前台动态加按钮,然后回传给服务器处理。

前台脚本使用的是jQuery,选择jQuery的原因有两个:一、使用起来简单;二、浏览器兼容性支持的好。

为了这段代码通用,开发人员用起来方便,利用了jQuery的($.extend())功能。

插件代码如下:

//ReportViewer控件增加工具按钮

(function() {

$.extend($.fn,

{

methods: {

createButton: function(width, height, type, uri, controlId) {

var A = $("<a></a>");

A.attr("id", type + "_" + "graph");

A.attr("href", "###");

A.attr("uri", uri);

A.css("margin-left", "5px");

var img = $("<img />");

img.attr("src", "../img/" + type + ".png");

img.css("width", width);

img.css("height", height);

img.css("margin-top", "4px");

A.prepend(img);

A.click(function() {

$("input[id$='hid" + controlId + "']").val($(this).attr("uri"));

var lb = $("a[id$='lb" + controlId + "']");

__doPostBack(lb.attr("id").replace(/_/g, "$"),'');

});

return A;

}

},

ReportViewAddTool: function(options) {

options = $.extend({ width: 15, height: 15, url: { table: "###" }, controlId: "CallBack" }, options);

//按钮图片的宽度与高度

var width = options.width;

var height = options.height;

var url = options.url;

var controlId = options.controlId;

var toolbar = $(this).children("div").eq(0);

//创建图片按钮的div

var div = $("<div id='divRVT'></div>");

div.css({ "display": "inline", "font-family": "Verdana", "height": "30px", "font-size": "8pt" });

$.each(url, function(k, v) {

div.prepend($.fn.methods.createButton(width, height, k, v, controlId));

});

toolbar.children("div").eq(0).append(div);

}

}

);

})(jQuery);

客户端实例代码:

<script type="text/javascript">

$(function() {

$(".reportTool").ReportViewAddTool({ url: { table: "SettleSheetRecycleStatistic", column: "SettleSheetRecycleStatisticGraph"} });

});

</script>

<div class="divReportV">

<rsweb:ReportViewer ID="rvPayPlan" runat="server" Width="1000px" Height="390px" Visible="true"

CssClass="reportTool">

</rsweb:ReportViewer>

<asp:HiddenField ID="hidCallBack" runat="server" />

<asp:LinkButton ID="lbCallBack" runat="server" OnClick="lbCallBack_Click"></asp:LinkButton>

</div>

实现效果图:

图1:

图2:

-------------------------------------------------------------------------------------------

根据博主的方法添加发现预览的时候按钮并没有出来于是对博主的脚本进行修改,于是自己对博主的脚本进行了

进一步的修改,修改完成后的效果是:

所有浏览器都兼容,都可以使用,呵呵大功告成!呵呵!

扩展资料源代码下载:

ReportViewer工具栏控件功能扩展

ReportViewer工具栏功能扩展[手动设置打印/导出按钮]的更多相关文章

  1. c#实现打印功能,可以设置纸张大小,字体和颜色等

    /// <summary> /// 打印的按钮 /// </summary> /// <param name="sender"></par ...

  2. Spring 3整合Quartz 2实现手动设置定时任务:新增,修改,删除,暂停和恢复(附带源码)

    摘要:在项目的管理功能中,对定时任务的管理有时会很常见.但一般定时任务配置都在xml中完成,包括cronExpression表达式,十分的方便.但是如果我的任务信息是保存在数据库的,想要动态的初始化, ...

  3. 如何对富文本编辑器(FCK Html Editor)的工具栏进行扩展?

    我们在项目开发过程中,会经常使用到富文本编辑器.GeneXus内置的富文本编辑器FCK Html Editor使用起来非常方便,只要将页面变量的控件类型(Control Type)选择为FCK Htm ...

  4. WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展

    一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要是对文本 ...

  5. spring源码深度解析-2功能扩展

    容器功能的扩展ApplicationContext用于扩展BeanFactory中现有的功能.究竟多出了哪些功能,进一步探索.写法上:BeanFactory bf = new XmlBeanFacto ...

  6. 富文本编辑器UEditor自定义工具栏(三、自定义工具栏功能按钮图标及工具栏样式简单修改)

    导读 富文本编辑器UEditor提供丰富了定制配置项,如果想设置个性化的工具栏按钮图标有无办法呢?答案是肯定的!前两篇博文简要介绍了通过将原工具栏隐藏,在自定义的外部按钮上,调用UEditor各命令实 ...

  7. dataTable之自定义按钮实现全表 复制 打印 导出 重载

    //本文对常用表格插件datatable 的自定义按钮功能键进行详细解释//其中 15-78行是定义表单//16 18 19 三行定义自定义功能按钮 实现对全表的 复制 打印 导出(csv即excel ...

  8. 【转】WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展

    一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要是对文本输入控件进行样式开发,及相关扩展功能开发,主要内容包括: 基本文 ...

  9. ApplicationContext(四)BeanFactory 功能扩展

    ApplicationContext(四)BeanFactory 功能扩展 上节我们提到容器刷新的第二步初始化 BeanFactory 工厂并解析配制文件,但此时 BeanFactory 的功能还很简 ...

随机推荐

  1. selenium操作隐藏的元素 (下拉框类型)

    有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了.例如,下面的情况: Python 页面主要通过“display:none”来控制整个下拉框不可见.这个时候如果直接操 ...

  2. java实验三——求平均数,数组排序(有关java保留小数位数,由于编译器版本未到1.5导致的报错format函数第二个参数不对,要求是Object[])

    package hello; import java.util.Arrays; public class 实验三更正版 { public static void main(String[] args) ...

  3. [转] oracle 数据库 SQL plus 连接方法

    http://hi.baidu.com/zzy382/item/a5b197f97a38e01ba7298832 之前电脑上安装了一个 Oracle  有一段时间没用,就把密码给忘了,按上面链接里的操 ...

  4. [UE4]C++中extern关键字浅谈

    变量声明和变量是有区别的 extern int i; //只是声明i而非定义i int j; //声明而且还定义了j 任何一个显式初始化的声明都将成为定义,而不管有没有extern,extern语句一 ...

  5. 从线性回归到CNN【转】

    原地址:http://zhangliliang.com/2014/06/14/from-lr-to-cnn/ csdn:    http://blog.csdn.net/t0903/article/d ...

  6. Python——连接操作数据库

    1.安装MySQL驱动程序.下载自动安装包,双击安装即可,非常简单. 2.连接MySQL,下面是Python示例代码. import MySQLdbconn=MySQLdb.connect(host= ...

  7. 学习笔记:Zepto笔记

    1.Zepto对象不能自定义事件 例如执行:$({}).bind('cust',function(){}); 结果:TypeError:Object#hasnomethod'addEventListe ...

  8. leetcode210

    public class Solution { //test case [1,0] public int[] findOrder(int numCourses, int[][] prerequisit ...

  9. docker 简单入门(一)

    本篇目录 写在最前面的话 docker概念介绍 镜像的概念.容器的概念 docker的安装介绍 写在最前面的话 大家好,首先跟大家说声对不起,我班门弄斧了,我本身是做系统开发,使用的语言是C#和JAV ...

  10. 突破MSDE 的2GB数据限制

    Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\ ...