如何利用Report.CustomCalc事件实现预处理输入数据

在评估对象中的表达式或来自数据源的数据时,将调用 表对象的 New CustomCalc 事件。所以,我们可以使用这个事件来拦截数据并将其替换。

FastReport .Net v2018.1最新版本】

在评估对象中的表达式或来自数据源的数据时,将调用 表对象的 New CustomCalc 事件。所以,我们可以使用这个事件来拦截数据并将其替换。这种操作什么时候会有用呢如,在接收到的数据中,有必要过滤数值或将其替换为其他行。

我们来看一个例子。创建一个简单的WindowsForms应用程序,将数据源添加到项目和DataSet组件中。另外,我们把 表组件放在表单上。

在 表组件的下拉菜单中,选择“Select Data Source”项:

如何实现预处理输入数据

并选择我们的数据源。

现在从同一菜单中选择“Design Report”项。为了演示,我从Employee表中添加了几个字段:

如何实现预处理输入数据

感兴趣的人可以看看现在 表的外观:

如何实现预处理输入数据

保存 表并关闭 表设计器。让我们在表单中添加一个按钮,以及按钮点击事件:

private void Run_Click(object sender, EventArgs e) { report1.Load("D://Reports//Simple.frx"); report1.Prepare(); report1.ShowPrepared(); }

这些都是老生常谈了。我上传了以前创建的 表,然后加载并显示它。

现在为report1对象添加CustomCalc事件:

如何实现预处理输入数据
private void report1_CustomCalc(object sender, FastReport.CustomCalcEventArgs e) { if (e.CalculatedObject.Equals("Roberto") ) { e.CalculatedObject = "Test Name"; } }

在这里,我们拦截所需的数据并将其替换。所有数据在构建 表期间通过CalculatedObject对象传递,我们捕捉到我们需要的数据“Roberto”,并替换它们。

你可以替换整个数据字段。在这种情况下,条件将如下所示:

if (e.Expression.IndexOf("employee.FirstName") != -1)

我们直接在事件处理句柄CustomCalc中编写数据替换的代码。你也可以直接在代码中分配事件处理句柄,例如,在MVC应用程序中。在应用程序代码中一个方便的地方我们编写:

report1.CustomCalc += FReport_CustomCalc;

以及处理句柄:

private void FReport_CustomCalc(object sender, CustomCalcEventArgs e) { if (e.Expression.IndexOf("Employees.FirstName") != -1) { e.CalculatedObject = "Test Name"; } }

运行应用程序。点击按钮以查看 表:

如何实现预处理输入数据

让我们来比较一下这个截图和之前的做法。如你所见,员工Roberto的第一个条目和名字被置于一个条件中,并被“Test Name”取代。

综上,我们有办法替换 表中的一些数据,对于有复杂 表需求的用户来说这会非常有用。

产品介绍 | 下载试用 | 优惠活动 | 在线客服 | 联系Elyn

 

推荐阅读
  • FastReport VCL 表控件开发者手册
  • FastReport Online Designer中文手册
  • Fastreport.Net教程2016
  • Fastreport.Net用户手册
  • FastReport.Net教程2017(持续更新中···)
  • FastReport Online Designer教程2017(持续更新中···)
  • 表教程2017(持续更新中···)
  • FastReport.Net v2018.1版本更新已经发布!

FastReport 正版授权 年终促销6.5折
标签: 表专家 表解决方案 表.NET 表控件 表设计

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年11月11日
下一篇 2017年11月11日

相关推荐

发表回复

登录后才能评论