2012-02-21 23 views
5

Konieczność przechwycenia zdarzenia rowsSelect obiektu dataTable z wyborem wiersza opartego na polu wyboru. Kod jest następujący:Zdarzenie 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" /> 

Nie jestem w stanie zrozumieć zachowania. Kiedy klikam pole wyboru po raz pierwszy, wywoływana jest metoda "onRowSelect". Kiedy odznaczam, "onRowUnselect" nie jest wywoływany. Ponadto, metoda "onRowSelect" jest wywoływana tylko raz dla siatki, tak jak w przypadku kliknięcia dowolnego innego pola wyboru, zdarzenie nie jest wyzwalane. Brak mi czegoś? Nie można zrozumieć tego zachowania.

Dzięki, Shikha

+0

Czy to działa, jeśli odświeżyć strona po pierwszej selekcji? –

+0

@Matt Tak, działa po pierwszym wybraniu po odświeżeniu. –

+0

Nie widzę żadnego polecenia aktualizacji w 'p: ajax'. Tak więc tylko bieżący element zostanie zaktualizowany. Możesz spróbować ustawić 'update =" @ form "' jeśli jest to możliwe w twoim przypadku. –

Odpowiedz

14

Jak używasz dataTable z checkbox oparty wyboru wierszy wówczas należy wymienić:

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

z następującymi:

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

Czy jest też zdarzenie dla "wybierz wszystko" poprzez pole wyboru w nagłówku dataTable? Zdarzenia 'rowSelectCheckbox' i' rowUnselectCheckbox' nie działają w tym przypadku. – Micer

+5

Okay zdarzenie to 'toggleSelect' (Kiedy pole wyboru nagłówka jest przełączane). – Micer

Powiązane problemy