根据主记录值隐藏TCXGrid中的TcxGridLevel

时间:2011-05-31 15:14:14

标签: delphi devexpress tcxgrid

我有一个TcxGrid,它由一个主TcxGridLevel和两个子TcxGridLevels(所有这些都使用TcxGridDBTableView)组成。我想隐藏其中一个子级别,具体取决于主级别记录值的值。我该怎么做?

1 个答案:

答案 0 :(得分:3)

以下是DevExpress的链接,描述了您的需求:

https://www.devexpress.com/Support/Center/Question/Details/Q96738

但我认为这有一些不利之处。首先,使用更大的数据集时速度相当慢。其次,当您的主级别频繁更改并且必须重新绘制网格时,它会“闪烁”。也许可以为您的detail-dataset设置过滤器,以便当您的nmaster具有正确的条件时,详细信息为“空”。 TcxGrid中有一个属性可以自动隐藏空的详细信息选项卡。

有些脱离上下文但是如果链接再次死亡:

  

1)如何触发Level3 OnGetGridView,因为Level3 View没有像我预期的那样改变

     

首次展开详细信息时,OnGetGridView事件仅引发一次。执行事件处理程序后,将创建并缓存指定的GridView克隆,以便下次扩展相同的主记录时不会触发事件。如果您需要稍后引发事件,可以通过调用主DataController的ClearDetails方法或ClearDetailLinkObject方法来清除所有详细信息克隆。

     

您可以在ExpressQuantumGrid文档的“TcxGridLevel.OnGetGridView”主题中找到此信息。

     

2)我也在为它显示的每个Gridview更改Level2和Level3 Caption,但是更改不是自动的,有时候Detail View需要关闭并再次打开才能更改Caption。

     

如果我们没有弄错的话,你可以在OnGetGridView事件处理程序中更改Level的Caption。如果是这样,则不会立即应用新标题,因为未完成相应元素的绘制。作为解决方法,您可以通过发布自定义消息来执行“延迟”操作。我附上了一个示例项目,以说明这种方法的实际应用。希望它能满足您的需求,并且适应它不会成为问题。