2016-04-25 5 views
1

Zuerst möchte ich Stapelüberlauf danken, um so fantastisch zu sein und fast alles zu beantworten, was wir brauchen. Aber wieder bin ich an etwas hängen geblieben und brauche Hilfe .Mein Problem ist dass mein columntoggler keine schließen-Schaltfläche oben rechts hat (also, wenn p: poll die Datentabelle aktualisiert, schließt die Toggle nicht und jedes Mal, wenn ich die ganze Seite aktualisieren muss :() .So, müssen wir jquery hinzufügen das, oder etwas, das ich wrong.Please vorschlagen me.Thank tue SieKann columntoggler nach Umfragen nicht schließen

<h:form rendered="#{bean.value!=null}" > 

    <p:dataTable id="tab" var="var" value="#{bean.value}" > 

       <f:facet name="header"> 
        Header for dataTable 
        <p:commandButton style="float:right" id="toggler" type="button" value="Columns" icon="ui-icon-calculator" /> 
        <p:columnToggler datasource="tab" trigger="toggler"> 
        <p:ajax event="toggle" listener="#{bean.onToggle}" /> 

         </p:columnToggler> 


       </f:facet> 
    <p:column visible="#{bean.list[0]}"> 
      <f:facet name="header"><h:outputText value="Start"/> 
      </f:facet> 
      <h:outputText value="#{var.startTime}"> 
       <f:convertDateTime pattern="dd.MM.yyyy" /> 
      </h:outputText> 
     </p:column> 

     <p:column visible="#{bean.list[1]}"> 
      <f:facet name="header"><h:outputText value="End"/> 
      </f:facet> 
      <h:outputText value="#{var.endTime}" > 
       <f:convertDateTime pattern="dd.MM.yyyy" /> 
      </h:outputText> 
     </p:column> 

     <p:column visible="#{bean.list[2]}"> 
      <f:facet name="header"><h:outputText value="Name"/> 
      </f:facet> 
      <h:outputText value="#{var.name}" > 

      </h:outputText> 
     </p:column> 

     </p:dataTable> 

     <p:poll interval="10" update="tab" /> 
    </h:form> 
+0

Hm, normalerweise wird der Toggler geschlossen, wenn Sie irgendwo außerhalb des Toggle-Panels klicken oder auf die Schaltfläche klicken, die dem Toggler zugeordnet ist. Das Problem kann also nur auftreten, wenn Sie den Toggler geöffnet haben und Sie darauf warten, dass das Poll-Skript ausgeführt wird. Ich denke nicht, dass dies ein normaler Anwendungsfall ist. Aber ein einfacher Ansatz wäre, den Befehl über JavaScript wie PF ('toggler') zu klicken. wenn das Umfrageereignis eintritt. Sie können das p: poll-Attribut oncomplete verwenden, um dies zu tun – ScreamingTree

+0

versucht, funktioniert aber nicht :( – Learner

+0

Vielleicht versuchen document.getElementById ('tab: toggler'). Click(); – ScreamingTree

Antwort

0

Sie sollten Ihren columnToggler einen Namen geben, damit Sie es mit PF zugreifen können (‚columnToggler‘) wie folgt aus:

<p:columnToggler widgetVar="columnToggler" datasource="tab" trigger="toggler"/> 

Sie können den columnToggler mit PF() und/oder mit jquery ausblenden. Ich fand, dass, wenn die Tabelle aktualisiert wird, während die Spalte Toggler geöffnet ist, es mehrere Kopien davon gibt, so dass Sie alle mit jquery auch schließen müssen.

Ich habe es nicht mit Umfrage versucht, aber ich habe es mit einem p: ajax.