在 ActiveReports 的详细信息部分隐藏单个控件

Hiding a single control on a Details Section in ActiveReports

我会尽量简化情况。

我有一个 ActiveReports 子报表,它有一个我使用 FetchData 事件填充的控件。有时我需要隐藏控件,如果它是空白的,或者在这种情况下,值是 Cotton 但 Polyester 应该出现。问题是,当我隐藏一个控件时,它会隐藏报告中每次出现的控件,而不仅仅是一个如此需要的实例。是不是我做错了什么。

我在InitializeReport中定义控件

Material1 = DirectCast(Detail.Controls("Material1"), Label)
Material2 = DirectCast(Detail.Controls("Material2"), Label)

我在 DataInitialize 事件中为控件设置了 Datafield

Fields.Add("Material1")
Fields.Add("Material2")

在 FetchData 事件中,我填充了控件,所以三个记录,控件被适当填充。没有错。如果第二条记录有值,那很好。例如

第 1 条记录,第一次调用 FetchData 事件。

Fields("Material1").Value = "Polyester" 
Material1.Value = "Polyester"
Fields("Material2").value = "Wool"
Material2.Value = "Wool"

第二条记录,第二次调用 FetchData 事件。

Fields("Material1").Value = "Cotton"
Material1.Value = "Cotton"
Fields("Material2").Value = "Wool"
Material2.Value = "Wool"

如果我想隐藏第二个record/control,在控件填充后,我在Details_Format事件中隐藏控件,然而,它隐藏了所有三个Material 控件而不仅仅是一个单独的实例。我做错了什么?

If Fields("Material1").value = "Cotton" then 
    Material1.Visible = false 
End if 

我希望羊毛在两个记录中出现两次,但棉花不出现在第二组中。我只是无法隐藏 Cotton 控件。我不想简单地清空 Material1,因为我需要隐藏控件以便我可以向上移动控件并重新组织报告。 Material1 旁边有一个标签,我隐藏了 Material1.

VB 或 C# 解决方案。

你需要给你添加Else If或者替换成

Material1.Visible = Not (Fields("Material1").Value = "Cotton")

这样它会根据值打开或关闭。当您设置 属性 时,您是在整个控件的实例上设置它,子报表只有一个实例,而不是每个细节都有一个实例。

希望这对您有所帮助。