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

如果没有就下载下来包。

预先在本地文件夹下面建立.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. MySQL锁机制浅析

    MySQL使用了3种锁机制 行级锁,开销大,加锁慢,会出现死锁,发生锁冲突的概率最高,并发度也最高 表级锁,开销小,加锁快,不会出现死锁,发生锁冲突的概率最低,并发度最低 页级锁,开销和加锁时间界于表 ...

  2. 【datatable】正在加载中的信息提示

    datatable插件 DataTables is a plug-in for the jQuery Javascript library. It is a highly flexible tool, ...

  3. 【hihoCoder】每周一题(从week 220开始)

    2018/9/17-2018/9/23  week 220 push button I 题目链接:https://hihocoder.com/contest/hiho220/problem/1 有N个 ...

  4. PHP创建多级目录文件夹

    PHP创建多级目录的代码实例如下: <?php function create_dir($dirName) { // 去除输入目录名中的空格部分 $dirName = trim($dirName ...

  5. delphi和C# 保存exe文件到数据库

    Delphi: procedure TForm1.Button1Click(Sender: TObject); var strSQL, sfilename: string; MStream: TMem ...

  6. Windows cmd 打开面板

    { 打开控制面板的命令是:“control”  打开控制面板  命令: rundll32.exe shell32.dll,Control_RunDLL  结果: 显示控制面板窗口.  例子:  Cal ...

  7. 深入理解Magento – 第四章 – 模型和ORM基础

    深入理解Magento 作者:Alan Storm 翻译:Hailong Zhang 第四章 – 模型和ORM基础 对于任何一个MVC架构,模型(Model)层的实现都是占据了很大一部分.对于Mage ...

  8. Android中的onWindowFocusChanged()方法详解

    Android中获取手机屏幕的高度和宽度,我们知道在onCreate方法中获取到的值都是为0的,有人说可以在onClick方法中获取值,这个也是个方法 ,但在onWindowFocusChanged方 ...

  9. 吉首大学校赛 I 滑稽树上滑稽果 (Lucas + 莫队)

    链接:https://ac.nowcoder.com/acm/contest/925/I来源:牛客网 题目描述 n个不同的滑稽果中,每个滑稽果可取可不取,从所有方案数中选取一种,求选取的方案中滑稽果个 ...

  10. HDU - 1712 (分组背包模板)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1712 题意:给你n个课程,每个课程有很多种学习方法,用的时间和取得的效果都不一样,现在你只有m天时间用来学 ...