# Richfaces: Column ReRender



## Sym (29. Jun 2011)

Hallo,

ich arbeite hier mit RF 3.3.3 und habe ein Problem.

Ich möchte in einer ExtendedDataTable die Möglichkeit bieten, Einträge zu Manipulieren (über eine Selektbox). Nun möchte ich ebenfalls, dass einige Spalten dann neu gezeichnet werden, da sich dort Inhalte verändern.

Die ganze Tabelle kann ich nicht neu zeichnen lassen, weil dann die selektbox ebenfalls ein ReRender erfährt.

Kennt jemand eine Möglichkeit, wie ich nur eine Spalte neu zeichne? Oder wie man das Neuzeichnen einer Selectbox unterdrücken kann?

Gruß und Dank Sym


----------



## nocturne (29. Jun 2011)

Einfach ist das nicht, du müsstest halt alle selectboxen aufzählen, deine auswahl-selectbox abziehen, und rerendern. Was spricht dagegen alle selectboxen zu "rerendern"?


----------



## Sym (30. Jun 2011)

Ja, wie geht das? Im Komponentenbaum befindet sich nur die aktuelle Zeile in den Columns. Schön wäre es ja, wenn einfach alle Elemente im JSF-Komponentenbaum zu finden sind. Allerdings ist dem nicht so.

Wenn ich alle Selectboxen rerender (was ich über ein ReRender der Table hinbekomme) klappt die aktuelle Selectbox zu, weil sie neu gezeichnet wird.


----------



## nocturne (30. Jun 2011)

Wenn ich das jetzt richtig verstehe willst du, wenn man mit der Maus über ein aufgeklapptes "selectItem" fährt, dynamisch die Anzeige aktualisieren - sozusagen als Vorschau.

Das könnte ich mir nur mit der Verwendung von rich:selectOneListbox / Size=1 vorstellen

Also du must zuerst den selectitem's den a4j:support geben, der auf das event "onMouseMove" horcht. Dann musst du im onSuccess eine Javascriptfunktion aufrufen - z.B. freakShit(this).
Dann musst du der selectOneListboxen eine ID geben z.B. id="refreshMe" und der ExtendedTable und allen relevanten Eltern.

Die Funktion freakShit(this) definierst du dann so:

```
function freakShit(callee){
  var i =0;
  for (;i < 90000; i++)
  { 
    var c = document.getElemetById('meineForm:meineExtendedTable['+i+'].refreshMe');
    if (c != callee) c.reRender();
  }  
}
```


----------



## Sym (4. Jul 2011)

Danke für Deine Hilfe. 

Nein, ich möchte, dass sich eine andere Spalte neu zeichnet. Das Problem ist, dass die Box zuklappt, wenn ich die ganze Tabelle neu zeichne. Mit JavaScript ist dies sicher möglich - was ich allerdings als unsauber empfinde.

Ich habe es nun mit AjaxKeys geschafft. Warum das damit funktioniert ist mir jedoch unklar. Aber der FF sowie IE finden das super.  

Also, ich bin glücklich. Ein Danke an Dich und schließend Winken.


----------

