winform连接锐浪GridReport打印示例

news/2025/10/20 14:22:57/文章来源:https://www.cnblogs.com/lrzy/p/19152561

image

 

image

 

using grproLib;
using LRTMS.Common;
using LRTMS.DB;
using LRTMS.Report;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;namespace LRTMS.Forms
{public partial class FrmDeliverPrint : DockContent{string sql = "";string taskId="0", taskNo, carNo, driverName, superCargoName, Taskdate;DataTable dt,dtDetail;//定义Grid++Report报表主对象GridppReport Report = new GridppReport();public FrmDeliverPrint(){InitializeComponent();Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize);}void ReportInitialize(){if (dataGridView1.Rows.Count < 0) return;int i = dataGridView1.CurrentCell.RowIndex;if (i < 0) return;taskNo = dataGridView1.Rows[i].Cells["TASK_BILL_NO"].Value.ToString();carNo = dataGridView1.Rows[i].Cells["car_number"].Value.ToString();driverName = dataGridView1.Rows[i].Cells["driver_name"].Value.ToString();Taskdate = dataGridView1.Rows[i].Cells["create_time"].Value.ToString();superCargoName = dataGridView1.Rows[i].Cells["SUPERCARGO_NAME"].Value.ToString();taskId = dataGridView1.Rows[i].Cells["task_id"].Value.ToString();Report.LoadFromFile("Report\\pcd.grf");Report.ParameterByName("task_no").AsString = taskNo;//主报表传参Report.ParameterByName("car_no").AsString = carNo;//主报表传参Report.ParameterByName("driver_name").AsString = driverName;//主报表传参Report.ParameterByName("supercargo").AsString = superCargoName;//主报表传参Report.ParameterByName("bill_date").AsString = Taskdate;//主报表传参Report.DetailGrid.Recordset.ConnectionString = "Provider=OraOLEDB.Oracle;" + CommFunc.GetConnString();Report.DetailGrid.Recordset.QuerySQL = "select * from lrtms_task_dtl where task_id=" + taskId;}private void DefineReport(){int Selected = 0;Report.Clear();Report.Printer.PaperOrientation = GRPaperOrientation.grpoLandscape;//<<定义报表头IGRReportHeader Reportheader = Report.InsertReportHeader();Reportheader.Height = 1.38;//插入一个静态文本框,显示报表标题文字IGRStaticBox StaticBox = Reportheader.Controls.Add(GRControlType.grctStaticBox).AsStaticBox;if (Selected == 0)StaticBox.Text = "客户清单打印";elseStaticBox.Text = "产品清单打印";StaticBox.Center = GRCenterStyle.grcsHorizontal; //使部件框在节中水平方向上居中对齐StaticBox.Font.Point = 15;StaticBox.Font.Bold = true;StaticBox.Top = 0.40;StaticBox.Width = 5.64;StaticBox.Height = 0.58;//>>定义报表头//<<根据DataGridView的列信息定义明细网格Report.InsertDetailGrid();Report.DetailGrid.ColumnTitle.Height = 0.58;Report.DetailGrid.ColumnContent.Height = 0.58;IGRRecordset RecordSet = Report.DetailGrid.Recordset;for (int i = 0; i < dataGridView1.ColumnCount; ++i){string ColumnName = dataGridView1.Columns[i].Name;RecordSet.AddField(ColumnName, GRFieldType.grftString);double ReportColumnWidth = Convert.ToDouble(dataGridView1.Columns[i].Width) / 50;Report.DetailGrid.AddColumn(ColumnName, dataGridView1.Columns[i].HeaderText, ColumnName, ReportColumnWidth);}}private void tsbSearchDeliver_Click(object sender, EventArgs e){string deliveryNo = txtDeliverNo.Text.Trim();if (string.IsNullOrEmpty(deliveryNo)){MessageBox.Show("请输入交货单号");return;}Report.PrintPreview(true);}private struct MatchFieldPairType{public IGRField grField;public int MatchColumnIndex;}private void tsbClose_Click(object sender, EventArgs e){this.Close();}/// <summary>/// 将 DataTable 的数据转储到 Grid++Report 的数据集中/// </summary>/// <param name="Report">报表对象</param>/// <param name="dt">DataTable对象</param>public void FillRecordToReport(IGridppReport Report, DataTable dt){MatchFieldPairType[] MatchFieldPairs = new MatchFieldPairType[Math.Min(Report.DetailGrid.Recordset.Fields.Count, dt.Columns.Count)];//根据字段名称与列名称进行匹配,建立DataReader字段与Grid++Report记录集的字段之间的对应关系int MatchFieldCount = 0;for (int i = 0; i < dt.Columns.Count; ++i){foreach (IGRField fld in Report.DetailGrid.Recordset.Fields){if (string.Compare(fld.Name, dt.Columns[i].ColumnName, true) == 0){MatchFieldPairs[MatchFieldCount].grField = fld;MatchFieldPairs[MatchFieldCount].MatchColumnIndex = i;++MatchFieldCount;break;}}}// 将 DataTable 中的每一条记录转储到 Grid++Report 的数据集中去foreach (DataRow dr in dt.Rows){Report.DetailGrid.Recordset.Append();for (int i = 0; i < MatchFieldCount; ++i){var columnIndex = MatchFieldPairs[i].MatchColumnIndex;if (!dr.IsNull(columnIndex)){MatchFieldPairs[i].grField.Value = dr[columnIndex];}}Report.DetailGrid.Recordset.Post();}}void dt_FetchREcord(){FillRecordToReport(Report, dtDetail);}private void tsmFilter_Click(object sender, EventArgs e){}//主表点击事件,根据主表的TASK_ID,显示子表的数据private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){if (e.RowIndex < 0) return;string taskId = dataGridView1.Rows[e.RowIndex].Cells["task_id"].Value.ToString();dtDetail = DBHelperOracle.GetTable("select * from lrtms_task_dtl where task_id=" + taskId);dataGridView2.DataSource = dtDetail;}//打印按钮private void tsbPrint_Click(object sender, EventArgs e){//最最重要的一句代码,Report.FetchRecord// Report.FetchRecord += dt_FetchREcord;Report.PrintPreview(true);}private void FrmDeliverPrint_Load(object sender, EventArgs e){sql = "select * from lrtms_task_hdr";dt = DBHelperOracle.GetTable(sql);dataGridView1.DataSource = dt;}}
}

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年破碎机厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析圆锥/辊式/对辊/煤矸石/砂石破碎机厂家推荐

引言在矿山开发、冶金加工、建材生产等核心领域,破碎机作为关键生产装备,其性能与品质直接决定项目生产效率、资源利用率及综合成本。当前市场上破碎机品牌数量繁杂,部分厂商缺乏核心技术支撑,设备运行稳定性差、故…

AI 的能源危机:训练一个模型究竟要耗掉多少电?

💬一、前言:AI 在变聪明,地球却在“变热” ChatGPT、Claude、Gemini、Mistral……一个比一个聪明。但你可能没想到——每当它们“开窍”一次,地球的电表也要疯狂转上几圈。 有研究估计:训练 GPT-4 级别的大模型,…

2025 年制砂机厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析高效/冲击式/砂石/新疆制砂机厂家推荐

引言 当前矿山开发、建筑建材等领域对制砂机需求持续增长,但市场品牌繁杂,部分产品存在技术落后、环保不达标、售后缺失等问题,企业选购时常面临设备适配难、后期保障不足的困境。为帮助企业精准筛选优质制砂机品牌…

拆解3D Gaussian Splatting:原理框架、实战 demo 与自驾仿真落地探索!

3D场景重建卡在哪儿?建模以月计、数据难复用、仿真不逼真! 看3DGS技术如何破局!从原理拆解到实战演练,揭秘如何用“3D色块”实现日级高保真重建,打通从真实世界到数字仿真的快车道!01 引言 当前,三维重建技术正…

Hyper-V 与 root的Android7模拟器共存

下载安装Android Studio 安装Android7android-24\default\x86Rootemulator -avd Phone -writable-system -selinux permissive abd root abd remount adb install SuperSU/common/Superuser.apk adb push SuperSU/x86/…

基于深度学习的CT扫描图像肝脏肿瘤智能检测与分析系统【python源码+Pyqt5界面+数据集+训练代码】 - 实践

基于深度学习的CT扫描图像肝脏肿瘤智能检测与分析系统【python源码+Pyqt5界面+数据集+训练代码】 - 实践2025-10-20 14:16 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: nor…

resend 单次发送命令

Invoke-WebRequest -Uri "https://api.resend.com/emails" `-Method Post `-Headers @{"Authorization" = "Bearer re_"} `-ContentType "application/json; charset=utf-8" …

视频监控界的“万能翻译器”:视频汇聚平台EasyCVR视频接入功能全解读

在数字化转型浪潮中,企业、政府单位常常面临一个共同的痛点:海量的监控设备品牌不一、协议各异,形成了众多的“信息孤岛”。如何将这些分散的、异构的视频资源进行统一汇聚、管理和应用?本文将深入解析EasyCVR视频…

PCIe 全高/半高,全长/半长 尺寸介绍 - ENGINEER

PCIe 全高/半高,全长/半长 尺寸介绍PCIe 全高全长尺寸​维度上限高度 H​111.15 mm​长度 L​312.00 mm​以上为业界常用的 PCIe 板卡尺寸上限,适用于标注为“全高全长(FHFL)”的扩展卡;不同厂商成品可能因散热器…

Android脱壳

已root的Android 7 安装Xposed鸭, FDex2, 待脱壳应用 使用FDex获得dex文件 dex转jar: d2j-dex2jar.bat a.dex, 会生成a-dex2jar.jar java -jar jd-gui-1.6.6.jar可选Save All Sources或将jar文件解压后针对单独文件夹压…

Linux框架编程:线程控制

Linux框架编程:线程控制pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

基于Ubuntu22.04 部署Dify详细教程

没有前言,直接开搞:检查是否安装过docker,没安装需要先安装docker环境。 检查docker版本 docker--versiondocker-compose--version我本地已经安装了,如果没安装,需要自行安装: sudo apt-getupdate&&sudo…

iOS 混淆工具链实战 多工具组合完成 IPA 混淆与加固(iOS混淆|IPA加固|无源码加固|App 防反编译)

工程化 iOS 混淆方案:结合 MobSF/class-dump 静态扫描、Swift Shield 源码混淆、Ipa Guard 成品混淆、Fastlane/Jenkins 自动化与 Frida 动态验证,映射表用 KMS 管理,形成可复现、可审计、可回滚的 IPA 加固闭环,适…

WebSocket Turbo Intruder:挖掘WebSocket安全漏洞的利器

本文深入介绍WebSocket Turbo Intruder工具,这是一款专为WebSocket协议安全测试设计的Burp Suite扩展。文章详细解析了工具的核心功能、使用方法、漏洞利用技巧,包括服务器端原型污染、竞态条件和拒绝服务攻击等高级…

Gitee:本土化技术平台如何重塑中国开发者生态

Gitee:本土化技术平台如何重塑中国开发者生态 在数字化转型的浪潮席卷全球的当下,中国开发者群体正迎来前所未有的发展机遇。作为国内领先的代码托管与协作平台,Gitee凭借其深度本土化特性,已成为1350万开发者的首…

使用 Github Pages 和 Hexo 搭建博客

介绍了使用GitHub Pages和Hexo搭建个人博客的优缺点及详细流程。优点包括免费服务器、二级域名和安全性保障;缺点涉及SEO收录较差和网络不稳定。搭建步骤涵盖GitHub仓库创建、Hexo初始化配置、文章编写发布及主题更换…

linux 移动硬盘加载失败

https://blog.csdn.net/cheneykl/article/details/79203457

吱吱企业即时通讯不止通讯,还是数字化协作的安全与效率标杆

在全球化数字化转型的浪潮中,企业即时通讯的兴起与发展,成为企业转型升级的重要技术支撑。然而,随着企业业务的升级,单纯的消息传递已然无法满足企业高效发展的需要,吱吱企业即时通讯打破“通讯工具”的桎梏,以安…

callout样式

操作成功你的更改已成功保存!系统将在 5 秒后自动刷新。ℹ️提示信息此功能仅对 VIP 用户开放,升级后可解锁全部权限。⚠️注意配置文件即将过期,请在 7 天内更新,否则服务将暂停。📌灵感笔记在 CSS 中使用 clam…