报表生成器fastreport .net 如何替换 \"打开 \"和 \"保存 \"对话框教程-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 9707
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2021-02-24 13:58
文章分类

(6)

  • (1)
  • (2)
  • (1)
  • (1)
  • (1)
  • (0)
文章存档

(6)

我的朋友
最近访客

分类: html5

2021-02-24 16:04:46

fastreport .net是适用于windows forms,asp.net,mvc和.net core的全功能凯发app官方网站的解决方案。它可以在microsoft visual studio 2005-2019中使用。支持.net framework 2.0-4.x,.net core 3.0及以上版本。

在fastreport .net 2021.1的新版本中,我们实现了对.net 5的支持。添加了新条形码-deutsce post leitcode。将rtf转换为报告对象的算法已得到显着改进。并且还添加了用于转换数字的新功能。欢迎下载体验。

替换 "打开 "和 "保存 "对话框

如果您决定将报表存储在数据库中,您可能需要改变设计器,使其能够从/向数据库打开和保存报表。也就是说,你需要用你自己的对话框来代替标准的 "打开 "和 "保存 "对话框。要做到这一点,请使用environmentsettings组件(见上一节)。该组件有以下事件。

customopendialog 

发生在报表设计器即将显示 "打开 "对话框时。在事件处理程序中,您必须显示一个对话框窗口以允许用户选择一个报表文件。如果对话框成功执行,必须返回e.cancel = false,并将e.filename设置为所选文件名。
下面的例子演示了如何使用这个事件。

private void customopendialog_handler(
object sender, opensavedialogeventargs e)
{
using (openfiledialog dialog = new openfiledialog())
{
dialog.filter = "report files (*.frx)|*.frx"。
// 如果对话框中的 "报告文件",则将e.cancel设置为false
// 已成功执行
e.cancel = dialog.showdialog() != dialogresult.ok。
//将e.filename设置为选定的文件名。
e.filename = dialog.filename。
}
}
自定义保存对话框 

发生在报表设计器即将显示 "保存 "对话框时。在事件处理程序中,您必须显示一个对话框窗口以允许用户选择一个报表文件。如果对话框成功执行,必须返回e.cancel = false,并将e.filename设置为所选文件名。
下面的例子演示了如何使用这个事件。

private void customsavedialog_handler(
object sender, opensavedialogeventargs e)
{
using (savefiledialog dialog = new savefiledialog())
{
dialog.filter = "report files (*.frx)|*.frx";
//从e.filename中获取默认文件名。
dialog.filename = e.filename;
// 如果 dialog.filename = e.filename; 
// 如果 dialog.filename = e.cancel,则设置 e.cancel 为 false
e.cancel = dialog.showdialog() != dialogresult.ok;
//将e.filename设置为选定的文件名。
e.filename = dialog.filename;
}
}
自定义打开报告 


发生在报表设计器即将加载报表时。在事件处理程序中,您必须从 e.filename 属性中指定的位置加载 e.report 属性中指定的报表。后一个属性包含 customopendialog 事件处理程序返回的名称。它可能是文件名、数据库键值等。
下面的示例演示了如何使用该事件:

private void customopenreport_handler(
object sender, opensavereporteventargs e)
{
//从给定的e.filename中加载报告。
e.report.load(e.filename);
}
自定义保存报告 


发生在报表设计器准备保存报表时。在事件处理程序中,您必须将 e.report 属性中指定的报告保存到 e.filename 属性中指定的位置。后一个属性包含 customsavedialog 事件处理程序返回的名称。它可能是文件名、数据库键值等。
下面的示例演示了如何使用该事件。

private void customsavereport_handler(
object sender, opensavereporteventargs e)
{
// 将报告保存到给定的e.filename中。
e.report.save(e.filename);
}
替换标准进度窗口

在进行以下操作时,会显示进度窗口。

  • 运行报告
  • 印刷
  • 输出
你可以通过设置环境设置组件的reportsettings.showprogress属性为false来关闭进度。除此之外,你还可以用你自己的进度窗口替换标准进度窗口。要做到这一点,请使用environmentsettings组件的以下事件(参见 "配置fastreport.net环境 "部分)。

startprogress 

在操作前发生一次。在这种情况下,你必须创建自己的进度窗口并显示它。

进度 

每次处理当前报表页时发生。在这种情况下,您必须在窗口中显示进度状态。

finishprogress 

操作后发生一次。在这个事件中,你必须销毁进度窗口。

progress事件的参数为progresseventargs类型。它有以下几个参数属性。
string message | 消息文本
int progress | 当前处理的报告页的索引。
int total | 报告的总页数。当准备一个报告时,这个参数可能为0,因为总页数是未知的。
在大多数情况下,您需要在 progress 事件处理程序中显示来自 e.message 属性的文本。如果你想显示一个进度条,其他参数可能会很有用。

传递自己的连接字符串

如果您使用在报表中定义的数据源,您可能需要向报表传递应用程序定义的连接字符串。这可以通过三种方法来完成。

第一种方法:你直接将连接字符串传递给报表中的connection对象。
执行以下操作。
report1.load(...);
//在加载报表之后,运行报表之前进行操作
//假设我们在报告中只有一个连接
report1.dictionary.connections[0].connectionstring = my_connection_string;
report1.show();

第二种方法:你用报告参数传递一个连接字符串。执行以下操作。

  • 运行报表设计器
  • 在 "数据 "窗口中,创建一个新的报表参数(例如,名称为 "myparameter")。更多细节请参见《用户手册》。
  • 在 "数据 "窗口中,选择包含数据源的 "连接 "对象。
  • 切换到 "属性 "窗口,将connectionstringexpression属性设置为以下内容。

[m yparam eter]

  • 将连接字符串传递给myparameter参数。
report1.setparametervalue("myparameter", my_connection_string);

第三种方法:使用environmentsettings组件的databaselogin事件(参见 "配置fastreport.net环境 "部分)。该事件在每次fastreport打开连接时发生。下面是这个事件处理程序的一个例子。

private void environmentsettings1_databaselogin(
object sender, databaselogineventargs e)
{
e.connectionstring = my_connection_string;
}
请记住,databaselogin事件是全局的,它适用于所有报表。


传递自定义sql

报表可能包含使用数据向导添加的数据源(通过 "数据|添加数据源... "菜单)。有时需要从您的应用程序向该数据源传递自定义sql。要做到这一点,请使用以下代码。

using fastreport.data.report1.load(...)
report1.load(...);
//在加载报表之后,运行报表之前进行操作
// 通过表的别名找到表
tabledatasource table = report1.getdatasource("mytable") as tabledatasource.selectcommand = "new sql text";
table.selectcommand = "new sql text";
report1.show();
对报表对象的引用

当您将报表作为一个类来使用时(请参阅 "存储报表和加载报表 "部分),您可以直接引用报表对象。下面的例子演示了如何改变报表中包含的 "text1 "对象的字体。

simplelistreport report = new simplelistreport();
report.text1.font = new font("arial", 12);

在其他情况下,如果需要获取一个对象的引用,必须使用report对象的findobject方法。
textobject text1 = report1.findobject("text1") as textobject;
text1.font = new font("arial", 12);

要引用报表中定义的数据源,使用report对象的getdatasource方法。该方法将数据源的别名作为参数。
datasourcebase ds = report1.getdatasource("products");


阅读(1717) | 评论(0) | 转发(0) |
0

上一篇:

下一篇:

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图