开发者社区> rdiframework> 正文

RDIFramework.NET ━ Web中打印的各种方案参考-欢迎补充

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/42527491   RDIFramework.
+关注继续查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/42527491

  RDIFramework.NET ━ Web中打印的各种方案参考-欢迎补充

  

  做Web开发的同志应该都深有体会,在web程序中打印不再象应用程序中那样便于控制了,web程序天生的一些特性造成了这个缺点,如:打印机在本地,而文件确可能在服务器上;格式如何控制和定制等等,都给我们开发中带来了很多问题,当然有了问题就会有人来研究解决,这里我先对目前流行的几种方式做个简单介绍:

  一、IE直接打印  

  这个不用多说,直接调用window.print或者webrower控件的ExecWB方法来打印。方便快捷,客户端无需任何设置即可。利用一些办法也可以实现简单的定制,比如做一个模板htm文件,然后在js中动态创建一个隐藏帧来,用脚本来生成其中的数据,再把最后的结果文件写入到隐藏帧打印处理。如果处理的好,实际上效果也是不错,对于简单的打印需求应该是够了。比如下面的这个实现,我们要打印待办任务,如下图所示:

  用户单击打印按钮,即可弹出打印效果,如下图所示:

  实现上面的效果非常的简单,这对简单的要求不高的打印非常有用。实现方式如下,首先我们需要设置一个我们要打印的范围,如下面代码: 

 <!--startprint--> 
 <table id="list"></table>    
 <!--endprint-->
   上面的Id=List是我们数据展示的区域,这样用户单击时就可以打印这个范围内的数据,打印代码如下: 

$('#btnPrint').click(
       function preview() {
           var bdhtml = window.document.body.innerHTML;
           var sprnstr = "<!--startprint-->";
           var eprnstr = "<!--endprint-->";
           var prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17);
           prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));
           window.document.body.innerHTML = prnhtml;
           window.print();
           window.history.go(0);
       });

   二、使用水晶报表做打印支持

  水晶报表我相信做.NET开发的朋友都有听过,水晶报表有很多优点,比如:快速的报表开发、能够导出成为复杂的交互性图表 、可以与其它控件一起在WebForm中使用 、能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式。如何制作水晶报表网上有很多现成的文章可以供参考,这儿就不介绍了。下面我们用水晶报表来做打印的实现。效果图如下,我们要打印产品管理的数据,如下图所示:

  我们单击打印,即可打印产品管理报表,如下图所示: 

  代码非常的简单,先要制作好水晶报表(报表的数据源可以为DataTable,也可以是实体),如何制作可以参考相关的文章,网上很多。制作好后,新建一个WebForm页面,将CrystalReportViewer添加到页面中,再指定其对应的报表即可,再加上下面这段代码,一个简单的报表就完成了。

	protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                DataTable dtReportData = new DataTable("dsProductInfo");
                IDbProvider dbProvider = DbFactoryProvider.GetProvider(SystemInfo.RDIFrameworkDbConection);
                dtReportData =dbProvider.Fill("SELECT TOP 100 PRODUCTCODE,PRODUCTNAME,PRODUCTMODEL,PRODUCTSTANDARD,PRODUCTUNIT,PRODUCTPRICE,PRODUCTDESCRIPTION FROM " +CASE_PRODUCTINFOTable.TableName);
                ReportDataSource rds = new ReportDataSource("dtCaseProductInfo", dtReportData);
                ReportViewer1.LocalReport.DataSources.Clear();
                ReportViewer1.LocalReport.DataSources.Add(rds);
                ReportViewer1.LocalReport.Refresh();
            }
        }

   三、使用jqprint进行打印

  jqprint,一个通过单击页面按钮,便实现页面打印的jQuery插件jqprint。jqprint的使用方法非常的简单,但比我们介绍的方法一更好用一些,更专业一些。要使用jqprint,首先要引用相应的js文件。

<script language="javascript" src="jquery-1.4.4.min.js"></script>
<script language="javascript" src="jquery.jqprint-0.3.js"></script>
 比如,我们要打印如下html的内容:
<div id="ddd">
    <table>
        <tr>
            <td>test</td>
            <td>test</td>
            <td>test</td>
            <td>test</td>
            <td>test</td>
        </tr>
    </table>
</div>
 只需调用这行代码即可实现:

$("#ddd").jqprint();

 如果需要使用jqprint,可以在这儿下载,点击下载

  下面我们打印一个复杂一点的,打印角色列表,效果果如下所示:  

  单击打印按钮,打印效果如下图所示:

  四、其他方法 

  1、我们可以使用导出Excel或PDF等方式来进行打印。

  2、使用商业打印控件进行打印,如Grid++ Report控件。

       3、lodop打印控件。

  4、本文只是抛砖引玉的作用,欢迎大家补充。


作者: EricHu 
出处:http://blog.csdn.net/chinahuyong  
Email:406590790@qq.com 
QQ交流:406590790 
QQ群:237326100 
框架博客:http://blog.csdn.net/chinahuyong 
               http://www.cnblogs.com/huyong
RDIFramework.NET,基于.NET的快速信息化系统开发、整合框架,给用户和开发者最佳的.Net框架部署方案。 
关于作者:高级工程师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,在面向对象、面向服务以及数据库领域有一定的造诣。现主要从事基于 RDIFramework.NET 框架的技术开发、咨询工作,主要服务于金融、医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。 
如有问题或建议,请多多赐教! 
本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
地图可视化不只是pyecharts.map
导读:地图可视化是一种非常直观的数据分析结果展现形式,python有很多可视化库可以实现,pyecharts就是很多python爱好者喜爱的实现地图可视化方法之一。不可否认,pyecharts绘制的地图实现方便、图形美观而且支持交互,但在面对不同需求时,其实我们还有很多其他手段实现地图可视化。
4 0
17 网络编程
Java SE提供java.net包,其中包含了网络编程所需要的最基础一些类和接口。这些类和接口面向两个不同的层次:基于Socket的低层次网络编程和基于URL的高层次网络编程,所谓高低层次就是通信协议的高低层次,Socket采用TCP、UDP等协议,这些协议属于低层次的通信协议;URL采用HTTP和HTTPS这些属于高层次的通信协议。低层次网络编程,因为它面向底层,比较复杂,但是“低层次网络编程”并不等于它功能不强大。恰恰相反,正因为层次低,Socket编程与基于URL的高层次网络编程比较,能够提供更强大的功能和更灵活的控制,但是要更复杂一些。
3 0
6. 使用antd pro构建web页面
在开始之前,希望我们已经掌握了一部分react的知识,由于没有太多经验,其实我也是属于摸索阶段。这里假定我们已经了解了react,redux和dva/umi相关的知识。并有做过相关练习。 如果还不了解以上相关的知识,建议去以下网站学习一遍,下面给出一个大概学习的路线吧。
5 0
SpringSecurity权限命名ROLE_问题
SpringSecurity权限命名ROLE_问题
4 0
一起来快排吧 | 数组排序
数组快速排序(快排)也算是前端面试的经典入门问题了,作为一个前端程序员掌握快排技能也是必须滴~
5 0
5. 使用Flask蓝图(blueprint)
使用Flask蓝图(blueprint)
4 0
00 Java 安装和语言的基本组成
Java 在 20 多年发展过程中,与时俱进,为了适应时代的需要,经历过两次重大的版本升级,一个是 Java 5,Java 5 提供了泛型等重要的功能;另一个是提供了 Lambda 表达式和枚举类等重要的功能的 Java 8。 一些重要的 Java 的版本 JDK 1.2(新增集合类), JDK 5(新增泛型), JDK 8(LTS版本,新增 lamda 表达式,方法引用), JDK 11(LTS 版本), JDK 17(LTS 版本)。
3 0
Android Studio 简介
Android Studio 是基于 IntelliJ IDEA 的官方 Android 应用开发集成开发环境 (IDE)。除了 IntelliJ 强大的代码编辑器和开发者工具,Android Studio 提供了更多可提高 Android 应用构建效率的功能,例如: • 基于 Gradle 的灵活构建系统 • 快速且功能丰富的模拟器 • 可针对所有 Android 设备进行开发的统一的环境 • Instant Run,可将变更推送到运行中的应用,无需构建新的 APK • 可帮助您构建常用应用功能和导入示例代码的代码模板和 GitHub 集成 • 丰富的测试工具和框架 • 可捕捉性能、可用性
8 0
【Kotlin 初学者】枚举类-密封类-数据类-继承(下)
三、数据类 3.1 创建数据类 3.2 toString、equals和hashCode的个性化实现 3.3 ==符号 3.4 copy() 函数 3.5 解构声明 四、 继承(extend) 4.1 Any 超类 4.2 继承类 4.3 函数重写 4.4 属性重写 4.5 类型检测(is)
4 0
Java设计模式-享元模式
Java设计模式-享元模式
3 0
+关注
rdiframework
RDIFramework.NET,基于.NET的快速信息化系统开发、整合框架,给用户和开发者最佳的.Net框架部署方案。 框架官网:http://www.rdiframework.net/ 框架博客:http://blog.rdiframework.net/
314
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载