彩票走势图

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

原创|使用教程|编辑:我只采一朵|2017-12-14 11:17:47.000|阅读 245 次

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

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

【点击下载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 正版授权 年终促销6.5折

标签:报表专家报表解决方案报表.NET报表控件报表设计

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP