2012-02-21 75 views
5

需要捕獲具有基於複選框的行選擇的dataTable的rowSelect事件。 的代碼如下:RowSelect事件 - Primefaces - dataTable

<p:ajax event="rowSelect" listener="#{articleBean.onRowSelect}" 
        oncomplete="articleBean.onSelection" /> 
<p:ajax event="rowUnselect" listener="#{articleBean.onRowUnselect}" 
        oncomplete="articleBean.onSelection" /> 
<p:column id="name" headerText="Select" selectionMode="multiple" 
        style="width:18px" /> 

我無法理解的行爲。當我第一次點擊複選框時,方法「onRowSelect」被調用。當我取消選擇時,「onRowUnselect」沒有被調用。而且,對於網格只調用一次「onRowSelect」方法,如果單擊其他複選框,事件不會被觸發。我錯過了什麼?無法理解這種行爲。

感謝, Shikha

+0

請問,如果你刷新工作第一次選擇後的頁面? – 2012-02-21 07:06:51

+0

@Matt是的,它適用於刷新後的第一個選擇。 – 2012-02-21 07:11:32

+0

我在'p:ajax'中看不到任何更新命令。所以只有當前元素會被更新。你可以嘗試設置'update =「@form」'如果你的情況可行的話。 – 2012-02-21 07:15:13

回答

14

當你正在使用的dataTable基於複選框行選擇,那麼你應該更換:

<p:ajax event="rowSelect" 
<p:ajax event="rowUnselect" 

下列要求:

<p:ajax event="rowSelectCheckbox" 
<p:ajax event="rowUnselectCheckbox" 
+0

是否還有一個通過dataTable頭中的複選框「選擇所有」的事件?在這種情況下,這些'rowSelectCheckbox'和'rowUnselectCheckbox'事件不起作用。 – Micer 2015-03-13 08:51:30

+5

好的事件是'toggleSelect'(當標題複選框被切換時。) – Micer 2015-03-13 09:05:41