隐藏活动报表中详细信息节上的单个控件

本文关键字:单个 控件 详细信息 活动 报表 隐藏 | 更新日期: 2023-09-27 18:37:13

我会尽量简化情况。

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

我在初始化报告中定义控件

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

我在 DataInitialize 事件中为控件设置了数据字段

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

在 FetchData 事件中,我填充了控件,因此三条记录,控件将得到适当的填充。 没有错。 如果第二条记录有值,那很好。例如

第一条记录,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"

如果我想隐藏第二个记录/控件,则在填充控件后,我在Details_Format事件中隐藏该控件,但是,它会隐藏所有三个 Material 控件,而不仅仅是一个单独的实例。 我可能做错了什么?

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

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

请提供 VB 或 C# 解决方案。

隐藏活动报表中详细信息节上的单个控件

您需要将 Else 添加到您 If 或替换为

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

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

希望这有帮助。