2011-01-24 63 views
5

Existe una necesidad empresarial de categorizar los artículos. La mejor idea parece ser arrastrar los elementos de una lista a la lista de categorías. El número de categorías puede variar, por lo que se usa p: dataTable. Se envía la solicitud de Ajax pero no se llama al método onDrop desde dentro de la tabla de datos. Cuando se elimina la tabla de datos y la columna y se tienen paneles de salida estáticos, entonces se llama a onDrop?Cómo usar PrimeFaces p: droppable dentro de datatable?

¿Cuál es la mejor manera de arrastrar y soltar elementos en categorías dinámicamente cambiantes?

 <h:form prependId="false"> 
      <h:panelGrid columns="2"> 
       <p:dataTable id="itemstable" value="#{categoryBean.items}" var="item"> 
        <p:column> 
         <p:outputPanel id="itemrow"> 
          <h:outputText value="#{item}"></h:outputText> 
         </p:outputPanel> 
         <p:draggable for="itemrow"></p:draggable> 
        </p:column> 
       </p:dataTable> 

       <p:dataTable value="#{categoryBean.categories}" var="cat"> 
        <p:column> 
         <p:outputPanel id="cats1"> 
          <h:outputText value="category1"></h:outputText> 
         </p:outputPanel> 
         <p:droppable for="cats1" 
            dropListener="#{categoryBean.onDrop}" 
            tolerance="pointer" 
            activeStyleClass="slotActive" 
            datasource="itemstable"> 
         </p:droppable> 
        </p:column> 
       </p:dataTable> 
      </h:panelGrid> 
     </h:form> 

Respuesta

5

Hay una bug en PrimeFaces, cuando <p:droppable> está anidada en los datos del elemento dropListener no consigue llamado repetición. También intenté usar la etiqueta de repetición Facelets <ui:repeat>, pero dropListener no se llamó como arrastrar al <p:dataTable>.

En la presentación de PrimeFaces, todos los ejemplos de arrastrar y soltar tienen áreas estáticas que se pueden soltar.
PrimeFaces ShowCase

+0

Ya no es el caso. Lo conseguí trabajando con arrastrar y soltar de una celda a otra. – Thomas

+0

@ Thomas6767 ¡Genial! ¿Puedes poner la versión de PrimeFaces que está arreglada para referencia? – Mark

+1

Funciona en Primefaces 5.1 – Thomas

Cuestiones relacionadas