首先,在对应的文件夹下面添加引用,如下图

如果没有就下载下来包。

预先在本地文件夹下面建立.frx文件,像这样的,

然后在触发事件下面写

//打印预览

private void btn_Preview_Click(object sender, EventArgs e)
{
string path = GetReportPath();    //该方法是获取绝对路径下面的.frx文件
if (string.IsNullOrWhiteSpace(path)) { return; }
FastReport.Report _report = new FastReport.Report();
_report.Load(path);
_report.PrintSettings.ShowDialog = true;
EnvironmentSettings FPEnvironmentSettings = new EnvironmentSettings();
FPEnvironmentSettings.ReportSettings.ShowProgress = true;
_report.RegisterData(GetPrintData());  //GetPrintData()方法是创建打印样式,和填充要打印的数据,绑定数据源,,,,,方法在下面

if (IsDesgin)
{
_report.Design();
}
else
{
_report.Show();
}
}

//打印

private void btn_Print_Click(object sender, EventArgs e)
{
string path = GetReportPath();
if (string.IsNullOrWhiteSpace(path)) { return; }
FastReport.Report _report = new FastReport.Report();
_report.Load(path);
_report.PrintSettings.ShowDialog = true;
EnvironmentSettings FPEnvironmentSettings = new EnvironmentSettings();
FPEnvironmentSettings.ReportSettings.ShowProgress = true;
_report.RegisterData(GetPrintData());
_report.Print();
}

//全局静态变量

public static String g_FolderPath = System.AppDomain.CurrentDomain.BaseDirectory + ReportConst.REPORT_SAVE_DIR + "\\";

private bool IsDesgin = false;

//重写此方法

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.O | Keys.K))
{
if (IsDesgin) { IsDesgin = false; }
else
{
IsDesgin = true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}

//获取.frx文件路径

public string GetReportPath()
{
return g_FolderPath + "HD_" + "电子交接班" + ".frx";
}

//绑定要打印的数据源

private DataSet GetPrintData()
{
DataSet dataSetPrint = new DataSet();   //先创建一个DataSet数据集
DataTable _EleCtronicHandover = new DataTable("电子交接班信息");    //创建要打印的表
#region 交班信息
_EleCtronicHandover.Columns.Add("交班人", typeof(string));
_EleCtronicHandover.Columns.Add("交班时间", typeof(string));
_EleCtronicHandover.Columns.Add("接班人", typeof(string));
_EleCtronicHandover.Columns.Add("接班时间", typeof(string));
_EleCtronicHandover.Columns.Add("原有病人数", typeof(string));
_EleCtronicHandover.Columns.Add("新入院人数", typeof(string));
_EleCtronicHandover.Columns.Add("现有病人数", typeof(string));
_EleCtronicHandover.Columns.Add("出院人数", typeof(string));
_EleCtronicHandover.Columns.Add("病危人数", typeof(string));
_EleCtronicHandover.Columns.Add("病重人数", typeof(string));
_EleCtronicHandover.Columns.Add("手术人数", typeof(string));
_EleCtronicHandover.Columns.Add("ICU人数", typeof(string));
_EleCtronicHandover.Columns.Add("转入人数", typeof(string));
_EleCtronicHandover.Columns.Add("转出人数", typeof(string));
_EleCtronicHandover.Columns.Add("日期", typeof(string));
_EleCtronicHandover.Columns.Add("交接班记录id", typeof(string));
DataRow dr = _EleCtronicHandover.NewRow();
using (var proxy = new ElectronicHandoverProxy())
{
HD_ELECTRONIC_HANDOVER electronichandover = proxy.GetElectronicHandoverByDate(date_DATE.DateTime.ToShortDateString());
if (electronichandover != null)
{        //向表中填充数据
dr["交班人"] = electronichandover.HANDOVER;
dr["交班时间"] = electronichandover.SHIFT_TIME;
dr["接班人"] = electronichandover.SUCCESSOR;
dr["接班时间"] = electronichandover.SUCCESSION_TIME;
dr["原有病人数"] = electronichandover.ORIGINAL_PATIENTS_NUM;
dr["新入院人数"] = electronichandover.NEW_ADMISSION_NUM;
dr["现有病人数"] = electronichandover.EXISTING_PATIENTS_NUM;
dr["出院人数"] = electronichandover.DISCHARGE_NUM;
dr["病危人数"] = electronichandover.CRITICALLY_ILL_NUM;
dr["病重人数"] = electronichandover.BE_CRITICALLY_ILL_NUM;
dr["手术人数"] = electronichandover.OPERATION_NUM;
dr["ICU人数"] = electronichandover.ICU_NUM;
dr["转入人数"] = electronichandover.CHANGE_INTO_NUM;
dr["转出人数"] = electronichandover.TURN_OUT_NUM;
dr["日期"] = electronichandover.ELECTRONIC_HANDOVER_DATE;
dr["交接班记录id"] = electronichandover.ELECTRONIC_HANDOVER_ID;
}
}
_EleCtronicHandover.Rows.Add(dr);     //表字段添加进表中
dataSetPrint.Tables.Add(_EleCtronicHandover);    把表加进创建好的DataSet中
#endregion

#region 病人信息
DataTable _DtPatient = new DataTable("病人信息");          创建另一张要打印的不同表
_DtPatient.Columns.Add("住院号", typeof(string));
_DtPatient.Columns.Add("床号", typeof(string));
_DtPatient.Columns.Add("姓名", typeof(string));
_DtPatient.Columns.Add("性别", typeof(string));
_DtPatient.Columns.Add("年龄", typeof(string));
_DtPatient.Columns.Add("入院日期", typeof(string));
_DtPatient.Columns.Add("入院诊断", typeof(string));
_DtPatient.Columns.Add("交班内容", typeof(string));
_DtPatient.Columns.Add("接班内容", typeof(string));
_DtPatient.Columns.Add("病人类型id", typeof(string));
_DtPatient.Columns.Add("病情类型名称", typeof(string));
_DtPatient.Columns.Add("创建时间", typeof(string));
_DtPatient.Columns.Add("创建人", typeof(string));
_DtPatient.Columns.Add("交班记录id", typeof(string));
_DtPatient.Columns.Add("科室id", typeof(string));
_DtPatient.Columns.Add("病历id", typeof(string));
_DtPatient.Columns.Add("查询日期", typeof(string));
_DtPatient.Columns.Add("病人信息id", typeof(string));
#endregion

var PatientList = gdvPatientList.DataSource as List<HD_PATIENT_INFORMATION>;     //获取当前gridview的数据
if (PatientList == null && PatientList.Count <= 0) { return null; }
foreach (HD_PATIENT_INFORMATION item in PatientList)
{
DataRow _dr = _DtPatient.NewRow();
_dr["住院号"] = item.INPATIENT_NUM;
_dr["床号"] = item.BED_NUM;
_dr["姓名"] = item.NAME;
_dr["性别"] = item.SEX;
_dr["年龄"] = item.AGE;
_dr["入院日期"] = item.ADMISSION_DATE;
_dr["入院诊断"] = item.ADMISSION_DIAGNOSIS;
_dr["交班内容"] = item.SHIFT_CONTENT;
_dr["接班内容"] = item.SUCCESSION_CONTENT;
_dr["病人类型id"] = item.DISEASE_TYPE_ID;
_dr["病情类型名称"] = item.DISEASE_TYPE;
_dr["创建时间"] = item.CREATION_TIME;
_dr["创建人"] = item.CREATER;
_dr["交班记录id"] = item.ELECTRONIC_HANDOVER_ID;
_dr["科室id"] = item.DEPT_ID;
_dr["病历id"] = item.MR_ID;
_dr["查询日期"] = item.SELECT_DATE;
_dr["病人信息id"] = item.HD_PATIENT_INFORMATION_ID;
_DtPatient.Rows.Add(_dr);
}
dataSetPrint.Tables.Add(_DtPatient);     //套路同上。。。
return dataSetPrint;   //返回添加完成的数据集DataSet
}

dev中 ,usercontrol打印界面内容,打印预览和打印的更多相关文章

  1. Lodop打印设计矩形重合预览线条变粗

    LODOP中的打印设计是辅助进行开发的,实际打印效果应以预览为准,很多效果都是在设计界面显示不出来,或设计和预览界面有差异.例如add_print_text文本的字间距.行间距,旋转,还有允许标点溢出 ...

  2. JAVA打印类(带预览)

    package tool; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; ...

  3. 网站开发进阶(十二)JS实现打印功能(包括打印预览、打印设置等)

    JS实现打印功能(包括打印预览.打印设置等) 绪 最近在进行项目开发时,需要实现后台管理端打印功能,遂在网上一阵搜索,搜到了很多相关的文章.其中绝大部分文章都是使用的Lodop5.0(Web打印和套打 ...

  4. 网页中动态嵌入PDF文件/在线预览PDF内容https://www.cnblogs.com/xgyy/p/6119459.html

    #网页中动态嵌入PDF文件/在线预览PDF内容# 摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如 ...

  5. 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览

    ### 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览 http://segmentfault.com/a/1190000002583569

  6. winform使用Barcodex控件预览和打印一维码

    1.控件下载. http://files.cnblogs.com/files/masonblog/barcodex.zip . 包含barcodex.ocx控件.barcodex帮助文档.两个winf ...

  7. JS 打印功能代码可实现打印预览、打印设置等

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  8. 借助flexpaper实现word在线预览和打印

    为了实现word能够在web上尽量以原始的排版样式展现出来,选择基于activex控件的方式太过于依赖某种浏览器,并且存在可能需要花费金钱购买相应的控件产品:于是借助flexpaper这种flash展 ...

  9. #网页中动态嵌入PDF文件/在线预览PDF内容#

    摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如下: 代码片段1: 1 <object ty ...

随机推荐

  1. android thread Runnable

    原文链接: http://blog.csdn.net/boyupeng/article/details/6208072 这篇文章中有三点需要提前说明一下, 一: 在android中有两种实现线程thr ...

  2. MVC+EF三层+抽象工厂

    MVC+EF三层+抽象工厂项目搭建   注意:项目经过两次搭建,所以截图中顶级命名空间有ZHH和ZHH2区别,但是架构的内容是一样的,可以将ZHH和ZHH2视为同一命名空间 一:权限管理 二:搜索 | ...

  3. 学习记录:@Transactional 事务不生效

    测试时使用spring boot2.2.0,在主类中调用,@Transactional 不起作用,原代码如下: @SpringBootApplication @Slf4j @Component pub ...

  4. 使用ReadStream方法延时读取文件

    const fs = require('fs'); let file = fs.createReadStream("filenpath.js"); file.pause(); fi ...

  5. 6、Python 中 利用 openpyxl 读 写 excel 操作

    __author__ = 'Administrator' from openpyxl import load_workbook # Excel_Util 类 class Excel_util: #初始 ...

  6. vue搭建vue-cli脚手架项目

    一.Node.js 1.介绍 Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.Node.js是一个基于Ch ...

  7. Kotlin学习笔记

    Kotlin的注释 Kotlin 的代码注释和Java一模一样 Kotlin的运行方式也是先kotlinc生成字节码,再kotlin字节码 如果一行里面只有一条语句,那么可以不写分号.但如果打算在同一 ...

  8. sql 聚合查询

    如果我们要统计一张表的数据量,例如,想查询students表一共有多少条记录,难道必须用SELECT * FROM students查出来然后再数一数有多少行吗? 这个方法当然可以,但是比较弱智.对于 ...

  9. PHP ftp_get_option() 函数

    定义和用法 The ftp_get_option() 函数返回 FTP 连接的各种运行时选项. 语法 ftp_get_option(ftp_connection,option) 参数 描述 ftp_c ...

  10. 为delphi程序添加脚本功能,用脚本控制delphi程序

    使用微软的ActiveX Scripting技术,可以在应用程序中集成使用vbscript或这javascript脚本语言.在delphi中点击Component菜单的Import Activex C ...