2013-10-21 48 views
0

如何獲取選定的dataTable數據?我用這種方式,因爲它是一個寄存器的「編輯」。選擇數據複選框 - DataTable - Primefaces

<p:dataTable id="dataTable" var="valor" style="width:100%; text-align:center" 
     value="#{beanMensagemXContato.dataModelMsg}" 
     selection="#{beanMensagemXContato.selectedMensagemAssociada}" 
     paginator="true" rows="6" > 

     <f:facet name="header"> 
      Mensagens 
     </f:facet> 
     <p:column style="width:5%"> 
      <p:selectBooleanCheckbox value="#{valor.associada}" >  
       <p:ajax process="@form" event="valueChange" listener="# {beanMensagemXContato.adicionarMensagemContato}">     
       <f:param name="messageSelecionada" value="#{beanMensagemXContato.msgAssociada}" /> 
       </p:ajax> 
      </p:selectBooleanCheckbox> 
     </p:column> 
... 
</p:dataTable> 

我會被挑豆的數據作爲事件SelectEvent:

public void adicionarMensagemContato (SelectEvent event){ 

    Mensagem mensagem = ((MensagemAssociada) event.getObject()).getMensagem(); 
    MensagemAssociada mensagemAssociada = (MensagemAssociada) event.getObject(); 

... 

} 

但我不能與事件ValueChange取數據。我已經通過標籤selectionMode =「multiple」嘗試了SelectEvent,設法得到當時選擇的數據,之前從數據庫中選擇並讀取的數據不會出現,只有在上面列出的xhtml中才使用。

我已經很感激幫助。

回答

0

選擇存儲在您的bean字段:

selection="#{beanMensagemXContato.selectedMensagemAssociada}" 

如果adicionarMensagemContato方法位於同一個bean,你可以訪問你的選擇不會有問題:

public void adicionarMensagemContato (SelectEvent event){ 
    doSomething(this.selectedMensagemAssociada); 
} 

另一種方式是使用f:setPropertyActionListener - 它允許您將來自當前行的元素存儲在bean字段中(下面的示例顯示如何訪問由按鈕點擊調用的當前元素):

<p:dataTable var="objectFromCurrentRow" ...> 
    ... 
    <p:column ...> 
    <p:button ... action=#{beanMensagemXContato.performAnActionOnCurrentElement} ...> 
     <f:setPropertyActionListener value="#{objectFromCurrentRow}" target="#{beanMensagemXContato.selectedMensagemAssociada}" /> 
    </p:button> 
    ...