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

如果没有就下载下来包。

预先在本地文件夹下面建立.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. Optional int parameter 'pId' is present but cannot be translated into a null value due to being declared as a primitive type.

    接口测试的时候遇到了一个问题,导致测试阻断了好久,在此记录,谨防忘记. 具体报错如下: Optional int parameter 'pId' is present but cannot be tr ...

  2. bzoj4544 椭圆上的整点

    我会所有推理..... Q1:真的这么暴力的统计答案? Q2:蜜汁统计答案.... Q3:为什么不考虑3在不同的位置的情况

  3. less&sass

    定义: less是一种动态样式语言,对css赋予了动态语言的特性,比如变量.继承.运算.函数,既可以运行在客户端,也可以运行在服务器端,依赖JavaScript   sass是一种动态语言,属于缩排语 ...

  4. Red Hat 操作系统 rpm 卸载软件提示"error: %preun( ) scriptlet failed, exit status 1"

    在linux里安装程序有两种方法,一种是源程序安装,按照安装包里的readme或者install文件指示,一步步地进行,通常是configure, make, install三部曲.另一种就是rpm包 ...

  5. compiz隐藏最大化窗口标题栏

    xfwm换了compiz试试,还行,挺方便.就是这个隐藏最大化窗口的标题栏没有现成的ui设置项,google到如下解决方案: 修改后立即生效. https://planetkris.com/2009/ ...

  6. 杭电多校第四场-H- K-th Closest Distance

    题目描述 You have an array: a1, a2, , an and you must answer for some queries.For each query, you are g ...

  7. ida x32 dbg 动态调试

    http://www.xrwcn.com/html/8.html 0x20019u 注册表 RegOpenKeyEx函数 LONG RegOpenKeyEx( HKEY hKey, // handle ...

  8. 【JS学习】慕课网4-1编程挑战 函数

    要求:小伙伴们,请编写"改变颜色"."改变宽高"."隐藏内容"."显示内容"."取消设置"的函数,点 ...

  9. 启动Process实现多任务

    from multiprocessing import Process import time '''multiprocessing模块1.跨平台的多进程模块2.提供了一个Process类的实例代表一 ...

  10. java序列化对象为什么要定义serialversionUID值?

    SerialVersionUid,简言之,其目的是序列化对象版本控制,有关各版本反序列化时是否兼容.如果在新版本中这个值修改了,新版本就不兼容旧版本,反序列化时会抛出InvalidClassExcep ...