2013-11-22 19 views
8

Diese Frage schreit nach einem Duplikat von JSF 2.0 + Primefaces 2.x: Tooltip for datatable row, aber da diese alte Frage KEINE funktionierende/befriedigende Lösung für mich hat und es keine Möglichkeit gibt, darauf aufmerksam zu machen, habe ich diese neue geöffnet .Tooltip für jede Zeile in Datentabelle

Es ist sehr einfach: Ich habe ein dataTable (mit JSF-Standard oder mit primefaces) und ich möchte eine andere Tooltip für jede Zeile hinzufügen (nicht nur für ein Feld in ihm!).

Was ich bisher versucht:

<pe:tooltip value="This is row number #{rowIndex}" 
    for="@(#table1 tr[role=row][data-ri=#{rowIndex}])" 
    atPosition="top center" myPosition="bottom center" 
    shared="true" /> 

wo #table1 die ID meiner Datentabelle ist. Dies kam mir aufgrund this in den Sinn.

Und beide Lösungen von JSF 2.0 + Primefaces 2.x: Tooltip for datatable row: die erste Lösung funktioniert, aber nur für ein Feld/ID und nicht für die ganze Zeile. Die zweite Lösung wird für mich überhaupt nicht funktionieren.

Und ich bin 100% sicher, dass beide - premefaces & primefaces Erweiterungen - arbeiten für mich, ich habe es getestet.

+0

Siehe auch: https://stackoverflow.com/questions/46116670/tooltip-in-the-column-header- of-a-primefaces-datable – Andrew

Antwort

6

Ich habe einige Test gemacht und dieser Ansatz funktioniert perfekt:

<p:dataTable var="entry" value="#{....}" styleClass="myTable" rowIndex="rowIndex"> 
    <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> 

Beachten Sie, dass an den Daten-ri Attribut, um auf Datentabelle Zeilen platziert werden, müssen Sie die das Attribut hinzufügen rowIndex (rowIndex = "rowIndex").

Es funktionierte auch mit

<p:tooltip for="@(.myTable tr[role=row][data-ri=#{rowIndex}])" value="This is row number #{rowIndex}" /> 
+0

Das funktioniert gut: Der Selektor funktioniert für die ganze Zeile, also muss er nicht für jede Spalte definiert werden. Der Standard-Anwendungsfall wäre z.B. Wert = "entry.tooltiptext". Dies sollte als die richtige Antwort markiert werden. – alfonx

+0

Ich versuche, das gleiche zu tun, aber ich bekomme 'Kann rowIndex des Typs Klasse java.lang.String zu int 'nicht konvertieren. Irgendwelche Ideen? – NeplatnyUdaj

+1

ändere es in rowIndexVar – giaffa86

3

Sie können es auch tun, ohne primefaces Erweiterungen zu verwenden. Dieser Beispielcode funktioniert bei mir mit Primzahlen 5.2. Beachten Sie, dass in privefaces 5.2 die p: dataTable-Eigenschaft rowIndexVar und nicht rowIndex wie im obigen Beispiel ist.

<h:form id="idform"> 

<p:dataTable var="komp" 
    id="idDataTable" 
    value="#{kompselect.listKomponenten}" 
    rowIndexVar="rowIndex" 
    selection="#{kompselect.selectedKomponente}" 
    rowKey="#{komp.name}"> 
    <p:column> 
     <h:outputText id="otSelKomponente" value="#{komp.name}" /> 
     <p:tooltip rendered="#{komp.displayToolTip}" 
       for="idForm:iddataTable:#{rowIndex}:otSelKomponente" 
       value="this is my Tooltip"/> 

    </p:column> 
</p:dataTable> 

2

nach diesem commment https://stackoverflow.com/a/13327334/4851983 (thaks BalusC) primefaces verknüpfen lassen automatisch die Objekte. Ich könnte ein Tooltip für eine Textarea 3.5 Primefaces, wie unten gezeigt

ist
<p:dataTable id="commentsTable" 
     value="#{historyReq.commentsFromReq}" var="comment" 
     emptyMessage="#{localeMsg.roles_table_empty}" 
     rows="10"                                        
     styleClass="myTable" 
     rowIndexVar="rowIndex"> 

<p:column headerText="HEADER A"> 
    <h:outputText value="#{bean.valorA}" /> 
</p:column> 

<p:column headerText="#{HEADER B}">             
     <p:inputTextarea id="txtArea" cols="45" rows="1" 
          value="#{bean.valorB}" 
          readonly="true" 
          disabled="false" 
          autoResize="false"> 
      <f:converter converterId="commentsConverter" /> 
     </p:inputTextarea>                         
     <p:tooltip for="txtArea" value="This is row number #{rowIndex}" />    
</p:column>  

+0

Wenn ich keinen Fehler mache, ist sein Beispiel ein statisches, während du versuchst, eine ID auf eine Komponente zu setzen, die sich immer wieder wiederholt. Also haben Sie in jeder Zeile einen Textbereich mit derselben ID, der nicht funktioniert. –