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

如果没有就下载下来包。

预先在本地文件夹下面建立.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
}

最新文章

  1. ssh整合问题总结--在添加商品模块实现图片(文件)的上传
  2. SQL 创建随机时间的函数
  3. 第五周PSP
  4. [daily][device][bluetooth] 蓝牙怎么办!(archlinux下驱动蓝牙鼠标,以及三星手机)
  5. ZendStudio的配置导出
  6. kuangbin_ShortPath S (POJ 3169)
  7. Asp.net关闭弹出窗口刷新父窗口
  8. python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式
  9. MS Sql Server 消除重复行 保留信息完整的一条 2011-11-26 13:19(QQ空间)
  10. Jquery右击显示菜单事件,运用smartMenu插件。
  11. table 表格固定表头和第一列、内容可滚动
  12. scrapy 日志一般配置
  13. Laravel 添加路由文件
  14. 动态规划:压缩编码;WirelessRouters;
  15. YYLabel计算富文本高度-膜拜大神
  16. hihocoder [Offer收割]编程练习赛61
  17. 36、IO流概述和分类
  18. 【bzoj3110】[Zjoi2013]K大数查询 整体二分+树状数组区间修改
  19. c++反射概念-简单介绍
  20. declare handler 声明异常处理的语法

热门文章

  1. Codeforces 488C Fight the Monster
  2. 使用allure2生成精美报告
  3. 博客中引入了gitment评论系统
  4. MySQL中orderby和limit分页数据重复的问题
  5. SpringMVC 与axis2 的整合(服务器端)
  6. myEclipse 搭建 Spring boot+myBatis+maven 项目流程
  7. ASE code search -- 第二次结对编程作业
  8. Linux设置以root用户开机自动登录桌面
  9. ZedGraph怎样在生成曲线时随机生成不一样的颜色
  10. 安装express 出现 错误