java - Primefaces Panels inside OrderList -
i'd implement reordering of list elements using p:orderlist , p:panel components. there pojos in list, problem occurs list of strings.
there bean:
public class backingbean {      private list<string> list;      public void adddate() {         list.add(new date().tostring());     }          // getters , setters... } my page source:
<p:orderlist id="videos" value="#{bean.list}" var="date" itemvalue="#{date}"     controlslocation="none">     <p:column >         <p:panel header="#{date}" toggleable="true" togglespeed="500">             fc barcelona 1 of 3 clubs...         </p:panel>     </p:column> </p:orderlist> the problem every time toggle 1 of panels, panels minimized , maximized few times, i.e. if there 3 elements in list, panels maximized/minimized 3 times. wrong?
well, depends if need reordering functionality. if can afford go without it, try ui:repeat instead of p:orderlist. generates original id every div able toggle 1 panel @ time. hope helps
edit: made custom "toggler" can toggle panels in p:orderlist separately.
        <p:orderlist id="videos" value="#{yourbean.list}" var="dataitem" itemvalue="#{dataitem}"                      controlslocation="none">             <p:column>                 <p:panel id="togglepanel">                         <f:facet name="header">                             <h:outputtext value="#{dataitem}" />                             <p:commandbutton value="+" onclick="showtoggle(this)" style="float: right;"/>                             <p:commandbutton value="-" onclick="hidetoggle(this)" style="float: right;"/>                             <div style="clear: both"/>                         </f:facet>                     <div>                         fc barcelona 1 of 3 clubs...                     </div>                 </p:panel>             </p:column>         </p:orderlist> and simple script :
<script type="text/javascript">   function hidetoggle(param) {       jquery(param).closest("div").next().slideup('slow',null);      }   function showtoggle(param) {       jquery(param).closest("div").next().slidedown('slow',null);      }  </script>  maybe there nicer solution believe point. hope helped.
Comments
Post a Comment