2012-04-02 5 views
12

Czy ktoś wie, w jaki sposób można wyświetlić etykietę narzędzia za każdym razem, gdy użytkownik unosi się nad wierszem w datach głównych? Ponadto etykieta narzędzia musi wyświetlać drzewo priorytetów, a dane do zapełnienia drzewa będą musiały zostać załadowane przed wyświetleniem etykiety narzędzia.JSF 2.0 + Primefaces 2.x: Etykieta narzędzia dla wiersza z datownikiem

Próbowałem prosty P.O.C przez dodanie podpowiedzi do mojego <p:column>, ale etykieta narzędzia pokazuje tylko dla tej kolumny i muszę mieć mysz bezpośrednio nad tekstem w kolumnie, aby pokazać podpowiedź. Mój P.O.C nie ma drzewa w etykiecie narzędzia, ponieważ nie wymyśliłem jeszcze tego fragmentu.

Każda pomoc/sugestia zostanie bardzo doceniona.

Odpowiedz

7

Możesz rozważyć przeniesienie do najnowszej wersji PrimeFaces i zacząć używać overlayPanel do tego. To dokładnie pasuje do twoich wymagań.

<p:dataTable value="#{myBean.myDetails}" var="myItem" rowIndexVar="rowIndex" > 
    <p:column> 
     <f:facet name="header"> 
      <h:outputLabel value="#"/> 
     </f:facet> 
     <h:outputLabel value="#{rowIndex}" id="myLbl"/> 

     <p:overlayPanel id="myPanel" for="myLbl" showEvent="mouseover" hideEvent="mouseout"> 
       <p:panelGrid columns="2"> 
        <f:facet name="header">Details In Tree</f:facet> 

        <h:outputLabel value="Column 1 of Table" /> 
        <h:outputLabel value="#{dataItem.Col1}" /> 

        <h:outputLabel value="Column 2 of Table" /> 
        <h:outputLabel value="#{dataItem.Col2}" /> 

       </p:panelGrid> 
      </p:overlayPanel> 
    </p:column> 
    ..... 
    ..... 
</p:dataTable> 

W powyższym przykładzie dane z wiersza są wyświetlane w etykietach, gdy użytkownik przesuwa kursor myszy w wierszach tabeli. Możemy równie dobrze wyświetlać drzewo w overlayPanel zgodnie z twoimi wymaganiami.

Mam nadzieję, że to pomoże.

+0

Przejście na najważniejsze 3 nie jest dla mnie obecnie możliwe z różnych powodów. Jednak przyjmuję twoją odpowiedź. Dzięki. –

+1

To przyzwyczajenie się, jako overlayPanel "obcięty" przez granice wiersza. Trzeba dodać 'appendToBody =" true "' na overlayPanel. Problem pojawił się apperently z 3.3: http://forum.primefaces.org/viewtopic.php?f=3&t=23575 – Paranaix

+3

Ale wyświetla się tylko w tekście w # {rowIndex}. Czy możesz mi powiedzieć, jak wyświetlić cały wiersz? –

0

Próbowałem znaleźć lepsze rozwiązanie i znalazłem udostępnioną etykietkę rozszerzeń głównych rozszerzeń.

Zrobiłem to rozwiązanie działa w moim kodu:

<p:dataTable var="entry" value="#{....}" styleClass="myTable"> 
    <p:column headerText="Header 1"> 
     <h:outputText value="#{entry.value1}" /> 
    </p:column> 

    <p:column headerText="Header 2"> 
     <h:outputText value="#{entry.value2}" /> 
     <pe:tooltip value="This is row number #{rowIndex}" forSelector=".myTable tr[role=row][data-ri=#{rowIndex}]" 
      shared="true" atPosition="top center" myPosition="bottom center" showDelay="500" /> 
    </p:column> 
</p:dataTable> 

DataTable potrzebuje styleClass, ponieważ przełącznik z podpowiedzi należy jedynie dopasować tę tabelę i żadne inne tabele.

+0

Mam problemy z pozycjonowaniem, próbując go z globalną etykietą narzędzi. –