Trigger / aktivieren Sie den RowEditor von Bean für eine Primefaces In-Cell-Bearbeitung aktiviert p: dataTable

8

Ich habe eine Oberflächenname p:dataTable mit InCell-Bearbeitung aktiviert und möchte den RowEditor auslösen / aktivieren für die neu hinzugefügte Zeile.

Auszug aus XHTML

%Vor%

Hier ist, was ich bisher für die Bean-Methode :

habe %Vor%

ich weiß es nicht

  1. wenn dies der richtige Ansatz ist
  2. falls ja, welches Objekt soll als dritter Parameter an den Konstruktor RowEditEvent(UIComponent component, Behavior behavior, Object object)
  3. übergeben werden
jimmybondy 11.12.2012, 13:45
quelle

7 Antworten

9

Wenn Sie im Facelet nur eine Datentabelle haben, versuchen Sie diese zu verwenden

%Vor%

Fügen Sie dies der Befehlsschaltfläche hinzu. Dies sollte funktionieren.

    
Gnappuraz 11.12.2012, 14:59
quelle
5

Ich habe die Methode execute (..) der Klasse RequestContext in meiner create-Methode verwendet. Dies erlaubte mir, zuerst den Index der Zeile zu berechnen, um in den Bearbeitungsmodus zu gelangen und ihn dynamisch in das Javascript einzufügen:

%Vor%

Hoffe, das hilft.

    
Lukas Z. 16.04.2013 10:53
quelle
1

Sie können der dataTable und einer JavaScript-Funktion in der Befehlsschaltfläche eine eindeutige styleClass hinzufügen:

Also füge zur Tabelle hinzu:

%Vor%

Und zum Knopf:

%Vor%

Und Ihr Code sieht so aus:

%Vor%     
Víctor Pariente 15.10.2013 09:08
quelle
0

Diese Lösung zielt darauf ab, ein paar Nachteile der ursprünglichen Antwort zu beheben:

%Vor%

Die obige Anweisung ruft alle "tr" -Elemente ab, die (auf jeder Ebene) von Elementen mit der Klasse ".ui-datatable-data" abstammen. Die möglichen Probleme damit sind:

  1. Wie bereits von @Gnappuraz erwähnt, wählt diese Anweisung die letzte Tabelle aus, wenn mehrere p: -Databata im Dokument vorhanden sind.
  2. Außerdem stieß ich auf ein Problem, bei dem sogar mit einer Datentabelle eine Spalte mit einer p: selectOneRadio-Komponente auch eine HTML-Tabelle (die "tr" -Elemente enthält) rendert. In diesem Fall wählt der Selektor das letzte "tr" für die Tabelle p: selectOneRadio und nicht das p: datatable.
  3. Kein Problem, aber die Anweisung kann verkürzt werden, um each () auszuschließen, da jQuery implizite Iteration .

Am Ende war ich:

%Vor%

Dieser Selektor sagt - holt das letzte "tr" -Element, das ein direktes Kind eines Elements mit der Klasse ".ui-datatable-data" ist, das ebenfalls ein Nachkomme des Elements mit ist ID "Tabelle" in der Form "tableForm". Mit anderen Worten, Sie können jetzt mehrere p: -Databases haben, und alle enthalten beliebige Komponenten, die HTML-Tabellen rendern.

    
jdessey 20.12.2013 19:31
quelle
0

Versuchen Sie Folgendes:

%Vor%

hat gut funktioniert, egal wie viele Databases auf derselben Seite sind.

    
user2926692 05.01.2014 03:32
quelle
0

Wenn Sie mehrere DataTable haben, von denen jede eine ID hat, dann versuchen Sie, eine dieser Lösungen zu verwenden:

%Vor%

ODER:

%Vor%

Das sollte perfekt funktionieren.

    
Majico 05.03.2015 11:53
quelle
-1

Um dies zu lösen, ist es besser, styleClass zu verwenden, und da es zur Korrektur dieses Problems notwendig ist, Javascript zu verwenden, müssen Sie die html-Tags in Ihrem Browser überprüfen, da sie sich scheinbar mit den Versionen von primefaces ändern. Für Version 6.1 habe ich das auf meine Bean gelegt:

%Vor%

und In meiner .xhtml habe ich das geschrieben:

%Vor%     
jmoran 25.05.2017 20:42
quelle

Tags und Links