使用columnToggler获取toggleEvent中的列组件对象



我在获取Column组件对象时遇到问题。

以下是应该实现的逻辑:

  1. 用户使用primefaces columnToggler切换表列(当用户单击复选框时,将调用ajax侦听器方法)
  2. 在listener方法中,我必须检索Column组件对象和调用方法,该方法将Column组件的对象及其可见性参数存储在数据库中,以便在加载页面时检索它

基本上,这只是一个简单的用户唯一的复选框列可见性"记住"的事情。

现在,一切都很好,当用户切换其中一个复选框时,我调用ajax监听器方法:

<p:commandButton id="columnToggler" type="button" value="Columns"/>
<p:columnToggler datasource="grid" trigger="columnToggler">
<p:ajax event="toggle" listener="#{bean.onColumnToggle}"/>
</p:columnToggler>

问题是我不知道如何获取Column组件对象,因为与cellEditEvent不同,toggleEvent没有返回Column对象的getColumn()方法。

有人知道怎么得到它吗?

columnChooser组件提供可选的切换ajax行为以侦听服务器端的切换事件。此行为的侦听器获取org.timefaces.event.ToggleEvent作为参数要切换的列的可见性和索引

请尝试这个例子:

<p:growl id="growl" showDetail="true" sticky="true" />
...
<p:commandButton id="columnToggler" type="button" value="Columns" />            
<p:columnToggler datasource="grid" trigger="columnToggler">
    <p:ajax event="toggle" listener="#{bean.onColumnToggle}" update="growl"/>
</p:columnToggler>

在你的豆子里:

public void onColumnToggle(ToggleEvent event) {
    final Visibility visibility = event.getVisibility();
    final FacesMessage msg = new FacesMessage();
    msg.setSummary("Column index " + event.getData().toString() + " toggled");
    msg.setDetail("Visibility: " + visibility);
    FacesContext.getCurrentInstance().addMessage(null, msg);
}

也许您可以使用数据表的方法

DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent(formId).findComponent(tableId);

看看这些方法,有一个叫做getColumns的方法非常有用。

相关内容

  • 没有找到相关文章

最新更新