ricco: DataTable ed espandibile colonna con internet explorer
-
20-09-2019 - |
Domanda
Ho creato una soluzione semplice per colonne / righe con ricco espandibili: datatable e ricco: colonna, che è simile a: Modo migliore per fare un espandibile / sottotabella pieghevole con una ricca: dataTable
Il codice facelets è (semplificato) come segue:
<rich:dataTable id="detailtable"
value="#{bean.model}"
var="row"
columns="2">
<rich:column id="detail-check">
<f:facet name="header">
<h:selectBooleanCheckbox value="#{bean.expandAll}">
<a4j:support event="onchange" action="#{bean.expandAllAction}"
reRender="detailtable" />
</h:selectBooleanCheckbox>
</f:facet>
<h:selectBooleanCheckbox value="#{row.expanded}">
<a4j:support event="onchange" reRender="detailtable" />
</h:selectBooleanCheckbox>
</rich:column>
<!-- actual data column -->
<rich:column id="detail-column"
rendered="#{row.expanded}"
breakBefore="true"
colspan="2">
<!-- detail column content -->
</rich:column>
</rich:dataTable>
Questo fornisce una tabella con la colonna espansa quando si fa clic su una casella di dettaglio, il dettaglio colonna è reso sotto la riga attuale. expandAllAction sul backup fagiolo soli itera su righe e imposta il loro attributo ampliato per lo stesso come in appoggio fagiolo, ampliando così / unexpanding tutte le righe.
Tuttavia questo non funziona correttamente con Internet Explorer (IE7 o IE8), anche se funziona con FF e Chrome. Se l'utente fa clic sul checkbox, nulla è reso fino a quando non scatta in qualsiasi altro luogo sulla pagina. Backup di fagioli e gli oggetti sono in fase di aggiornamento, ma non ri-di rendering fino a qualche altro elemento viene cliccato.
E 'questo qualcosa malvagio di nuovo con IE o semplicemente un bug con RichFaces? Ho trovato qualche problema simile con IE e tbody, ma avrebbe dovuto essere risolto. Posso inviare una segnalazione di bug, ma fino a quel, c'è qualche soluzione semplice?
Versione RichFaces è 3.3.1 ed è eseguito su Jboss 4.2.1GA e impacchettato Sun RI.
Soluzione
Prova utilizzare un altro evento come onclick
Da tldoc di selectBooleanCheckBox : onchange
è "codice Javascript eseguito quando questo elemento perde il focus e il suo valore è stato modificato dopo guadagnando attenzione." e onclick
è "codice Javascript eseguito quando un pulsante del puntatore si fa clic su questo elemento."
Ieri è stata una simile domanda . Un commento di BalusC potrebbe confermare la mia ipotesi "in caso di radio / checkboxes l'evento di modifica è in alcuni browser sparati solo se si fa clic su 2 volte"