在 ActiveReports 中,如何根据报表数据中的值更改格式?
具体来说,我想根据数据中的值显示或隐藏图片。报表通过其 DataSource 属性的集合绑定到对象列表。这些对象具有Condition
值“差”、“正常”等的属性。我在报告中有一些图片对应于不同的条件,我想隐藏除与值对应的图片之外的所有图片。
我应该订阅Format
详细信息部分的活动吗?如果是这样,我如何获得“当前记录”数据?
在 ActiveReports 中,如何根据报表数据中的值更改格式?
具体来说,我想根据数据中的值显示或隐藏图片。报表通过其 DataSource 属性的集合绑定到对象列表。这些对象具有Condition
值“差”、“正常”等的属性。我在报告中有一些图片对应于不同的条件,我想隐藏除与值对应的图片之外的所有图片。
我应该订阅Format
详细信息部分的活动吗?如果是这样,我如何获得“当前记录”数据?
好的,我仍然不知道如何获取当前数据对象,但我发现您可以使用报表的Fields
属性从当前数据对象中检索值。
下面的代码订阅了详细信息部分的Format
事件。Fields["Condition"].Value
获取当前数据对象的Condition
属性值(恰好是一个枚举值)。
private void detail_Format(object sender, EventArgs e)
{
Condition? condition = Fields["Condition"].Value as Condition?;
conditionUnknownPicture.Visible = (condition == Condition.Unknown);
conditionPoorPicture.Visible = (condition == Condition.Poor);
conditionNormalPicture.Visible = (condition == Condition.Normal);
conditionNewPicture.Visible = (condition == Condition.New);
}
编辑:
从那以后,我了解到从 Format 事件访问 Fields 集合是违反 ActiveReports 设计规则的,因为它在某些奇怪的极端情况下不起作用。我现在改用这种方法:http ://www.datadynamics.com/forums/ShowPost.aspx?PostID=133642#133642
DataDynamics 有一个功能请求 22786 以提供对来自 Format 事件的数据对象的访问。