【点击下载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用户手册
- 如何在Web报表FastReport.Net中注册数据源
- FastReport.Net库以及发布注意事项
- 【重要更新】FastReport.Net v2018.1版本更新已经发布!(附下载)
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:FastReport控件中文网 [https://www.fastreportcn.com/]
本文地址:https://www.fastreportcn.com/post/1892.html