如何区分行展开和行折叠

Primefaces RowToggle - How to differentiate between Row Expansion and Row Collapse?

本文关键字:折叠 何区      更新时间:2023-09-26

我使用的是Prmefaces 3.5。我在数据表中使用RowToggler。每当单击RowToggle按钮时,我都会执行一些数据库访问操作,并显示一个包含访问数据的网格。

每当单击切换按钮时,调用下面的侦听器,在其中执行操作

<p:ajax event="rowToggle" listener="#{controller.onRowToggle}" 

但是问题在于调用这个方法。不仅在展开行时调用此方法,而且在行折叠时也会调用此方法。在折叠行时不需要执行数据库操作,因此这将是一个昂贵的操作。

请建议如何知道行是否扩展或折叠,以便我可以有条件地执行操作?

您是否尝试在侦听器中使用ToggleEvent#getVisibility()方法?这里的例子:

public void onRowToggle(ToggleEvent event) {
    if (event.getVisibility() == Visibility.VISIBLE) {
        // your code here
    }
}

如果您想使RT 仅在行正在展开时,这将起作用:

<p:ajax
    event="rowToggle"                                            
    onstart="return cfg.ext.params[0].name.indexOf('_rowExpansion') != -1"
    listener="#{fooViewModel.onRowToggle}"
/>