ReportViewer工具栏功能扩展[手动设置打印/导出按钮]
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工具栏功能扩展[手动设置打印/导出按钮]的更多相关文章
- c#实现打印功能,可以设置纸张大小,字体和颜色等
/// <summary> /// 打印的按钮 /// </summary> /// <param name="sender"></par ...
- Spring 3整合Quartz 2实现手动设置定时任务:新增,修改,删除,暂停和恢复(附带源码)
摘要:在项目的管理功能中,对定时任务的管理有时会很常见.但一般定时任务配置都在xml中完成,包括cronExpression表达式,十分的方便.但是如果我的任务信息是保存在数据库的,想要动态的初始化, ...
- 如何对富文本编辑器(FCK Html Editor)的工具栏进行扩展?
我们在项目开发过程中,会经常使用到富文本编辑器.GeneXus内置的富文本编辑器FCK Html Editor使用起来非常方便,只要将页面变量的控件类型(Control Type)选择为FCK Htm ...
- WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展
一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要是对文本 ...
- spring源码深度解析-2功能扩展
容器功能的扩展ApplicationContext用于扩展BeanFactory中现有的功能.究竟多出了哪些功能,进一步探索.写法上:BeanFactory bf = new XmlBeanFacto ...
- 富文本编辑器UEditor自定义工具栏(三、自定义工具栏功能按钮图标及工具栏样式简单修改)
导读 富文本编辑器UEditor提供丰富了定制配置项,如果想设置个性化的工具栏按钮图标有无办法呢?答案是肯定的!前两篇博文简要介绍了通过将原工具栏隐藏,在自定义的外部按钮上,调用UEditor各命令实 ...
- dataTable之自定义按钮实现全表 复制 打印 导出 重载
//本文对常用表格插件datatable 的自定义按钮功能键进行详细解释//其中 15-78行是定义表单//16 18 19 三行定义自定义功能按钮 实现对全表的 复制 打印 导出(csv即excel ...
- 【转】WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展
一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要是对文本输入控件进行样式开发,及相关扩展功能开发,主要内容包括: 基本文 ...
- ApplicationContext(四)BeanFactory 功能扩展
ApplicationContext(四)BeanFactory 功能扩展 上节我们提到容器刷新的第二步初始化 BeanFactory 工厂并解析配制文件,但此时 BeanFactory 的功能还很简 ...
随机推荐
- Bootstrap:教程、简介、环境安装
ylbtech-Bootstrap:教程.简介.环境安装 1. Bootstrap 教程返回顶部 1. Bootstrap 教程 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.B ...
- cookie js案例
//存cokie function setcookie(keys,value,time){ document.cookie=keys+"="+decodeURIComponent( ...
- vSphere client 登陆ESXI主机“您无权登录次服务器”
vCenter安装在虚拟机上,安装好后想调整下内存,直接把虚拟机关闭了电源,突然一想服务器都被我关了,还拿什么修改内存,完蛋! 突然想起,在使用vCenter之前,都是用vsphere client ...
- ie6,7下的textarea的type获取
<input type='button' value="按钮" class='gys'> <textarea class='gys gystextarea'> ...
- 代码生成器 CodeSmith 的使用(四)
在上一篇的版本中,我们生成了数据库中的字段,使生成的属性更加简洁,可读性也提高了很多,但都是钍对一个数据库的单个表,如果要将数据库中的所有 的表都生成相应的类,表中的字段也都生成属性,运行一次就可以将 ...
- UML 中关系图的解说
最近在教软件工程项目实践,就又仔细了解了下UML中各种关系的意义,虽然有点简单,但是有些概念还是经常被混淆的,写在这里是为了加深印象. 关系列表: 继承关系(Generalization): 实现关系 ...
- servlet里的过滤器filter
过滤器的主要作用 1,任何系统或网站都要判断用户是否登录. 2,网络聊天系统或论坛,功能是过滤非法文字. 3,统一解决编码 怎么创建一个过滤器: 1,生成一个普通的class类,实现Filter接口( ...
- OpenACC 书上的范例代码(Jacobi 迭代),part 1
▶ 使用Jacobi 迭代求泊松方程的数值解 ● 原始串行版本,运行时间 2272 ms #include <stdio.h> #include <stdlib.h> #inc ...
- zabbix监控windows用户登陆情况
https://yq.aliyun.com/articles/511381 添加登录失败监控项: 特别注意:把类型设置为:文本格式,否则会报类型错误. eventlog[Security,," ...
- HTML5 Canvas ( 文字的书写和样式控制 ) font, fillText, strokeText
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...