2015-06-22 36 views
1

我在獲取Column組件對象時遇到問題。使用columnToggler獲取toggleEvent中的列組件對象

這裏是應該實現的邏輯:

  1. 用戶切換使用primefaces columnToggler(當用戶點擊複選框,AJAX聽者方法被調用)在監聽方法
  2. 表列,我要檢索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> 

的問題是,我不知道怎麼去柱組件對象,因爲不像cellEditEvent, toggleEvent沒有返回Column對象的getColumn()方法。

有沒有人有想法如何得到它?

回答

1

可選toggle ajax行爲由columnChooser組件 提供,用於偵聽服務器端的切換事件。此行爲的監聽器 獲取org.primefaces.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> 

在你的bean:

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); 
} 
+0

謝謝,我完全錯過了文檔中的索引部分。這就是我需要的。 – env

1

也許你可以使用的數據表

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

方法看看的這些方法中,有一個叫做getColumns,它可以是有用的。