在 C# 中调用FastReport 设计窗口
时间:2020-05-29
本文章向大家介绍在 C# 中调用FastReport 设计窗口 ,主要包括在 C# 中调用FastReport 设计窗口 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
因为引入FastReport中的控件时报错,在网上又搜不到相应的解决办法
所以在这里动态添加
首先在创建的项目中引入FastReport.dll
//创建一个空的报表
Report report = new Report(); designerControl1.Report = report;
//恢复设计布局 designerControl1.RefreshLayout(); panel2.Controls.Add(designerControl1); designerControl1.Dock = DockStyle.Fill; designerControl1.UIStateChanged += designerControl1_UIStateChanged;
// 设计器ui改变事件
private void designerControl1_UIStateChanged(object sender, EventArgs e) { // btnSave.Enabled = designerControl1.cmdSave.Enabled; // btnUndo.Enabled = designerControl1.cmdUndo.Enabled; // btnRedo.Enabled = designerControl1.cmdRedo.Enabled; }
另一种方法 ,通过 report.Design(); 方法来调用设计器
Report report = new Report(); DataSet ds = new DataSet(); DataTable dt = new DataTable(); dt= DbHelperOra.Query(txt_Sql.Text).Tables[0]; dt.TableName = "测试"; DataTable dt1 = new DataTable("测试2"); dt1.Columns.Add("时间"); dt1.Columns.Add("打印人"); dt1.Rows.Add("2020-01-01", "管理员"); dt1.Rows.Add("2020-02-02", "管理"); ds.Tables.Add(dt.Copy()); ds.Tables.Add(dt1.Copy()); report.RegisterData(ds); //动态添加参数 report.SetParameterValue("测试参数名", "测试值"); //获取指定名称的数据源 report.GetDataSource("测试").Enabled = true; report.GetDataSource("测试2").Enabled = true; //调出设计器 report.Design(); //显示预览窗口 report.Show(); report.Dispose();
打开报表不绑定数据是无法预览的
Report report = new Report();
OpenFileDialog openDlg = new OpenFileDialog();
openDlg.Filter = "报表文件|*.frx";
if (openDlg.ShowDialog() == DialogResult.OK)
{
report.Load(openDlg.FileName);
report.Design();
report.Dispose();
}
原文地址:https://www.cnblogs.com/iowoi/p/12987498.html
- Java开发Spring笔记第二天
- PHP调用Go服务的正确方式 - Unix Domain Sockets
- 一条看似平常的报警邮件所做的分析(r8笔记第9天)
- 55. 上传文件(Web版) | 厚土Go学习笔记
- R语言与机器学习学习笔记(分类算法
- 54. 心跳的实现 | 厚土Go学习笔记
- 通过错误的sql来测试推理sql的解析过程(二) (r8笔记第7天)
- 53. Socket服务三次握手的示例 | 厚土Go学习笔记
- R分词继续,"不|知道|你在|说|什么"分词添加新词
- Java开发Spring第一天
- 关于R安装中文分词包安装不上的问题install.packages("tm")
- dataguard备库的数据文件的迁移实战(r8笔记第24天)
- Hive的left join、left outer join和left semi join三者的区别
- 52. Socket Server 自定义协议的简单实现 | 厚土Go学习笔记
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- nmap
- MSF基础与应用
- Windows系统组件漏洞
- 【风险通告】FastAdmin会员中心Getshell漏洞
- Azure Cosmos DB介绍及演示
- 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta
- 《一起学sentinel》一、一起搭建sentinel服务
- InfluxDB和Grafana实现传感器数据的存储和可视化
- 样本相关性分析
- Android 序列化 Serializable与Parcelable
- 《一起学sentinel》二、初探sentinel的Slot
- Redis突然报错,今晚又不能回家了...
- 查询ElasticSearch:用SQL代替DSL
- Java开源框架中的设计模式以及应用场景
- 统一定制API返回格式,我只做了这几件事