1

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

4

1 回答 1

3

这是 DevExpress 的链接,描述了您想要的内容:

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

但这在我看来有一些缺点。首先,对于较大的数据集,它非常慢。其次,当您的主级别频繁更改并且必须重新绘制网格时,会出现“闪烁”。也许可以为您的详细数据集设置一个过滤器,以便当您的 nmaster 条件正确时详细信息为“空”。TcxGrid 中有一个属性可以自动隐藏空的详细信息选项卡。

有点断章取义,但万一链接再次失效:

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

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

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

2)我还为它显示的每个 Gridview 更改 Level2 和 Level3 Caption,但更改不是自动的,有时需要关闭并再次打开详细视图才能更改标题。

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

于 2011-06-01T07:09:07.613 回答