Verwenden Sie ein DynamicViewPanel und eine Customizer-Bean, um die Spalte zu ändern, die eine Verknüpfung ist. Die Spalte, die die erste Spalte in der Ansicht ist, wird mithilfe der Methode setRendered() über die Bean ausgeblendet, und eine andere Spalte wird mit der Methode setDisplayAs ("link") zur Verknüpfung verwendet. Das funktioniert einwandfrei, aber das Ereignis oncolumnclick wird nie ausgelöst. Es scheint, dass das Ereignis an die ursprüngliche Spalte gebunden ist und nicht an die "neue" Verknüpfungsspalte.DynamicViewPanel ignoriert oncolumnclick wenn angepasst
Wie auch immer, um ein Ereignis an die "neue" Linkspalte zu binden? Ich muss eine Bereichsvariable festlegen, bevor ich zur neuen XPage navigiere.
Howard
Got dies etwas mit zu arbeiten, wie Maire vorgeschlagen.
Bei dem Verfahren public void afterCreateColumn (Faces Kontext, int index, ColumnDef COLDEF, IControl Spalte) {fügte ich diesen Code das Ereignis aus der Spalte zu bekommen war ich versteckt:
//Hide the first column in this view
if(dynamicColumn.getColumnName().equalsIgnoreCase("$2")){
//dynamicColumn.setRendered(false);
dynamicColumn.setDisplayAs("hidden");
String type = dynamicColumn.getChildren().get(0).getClass().toString();
DebugToolbarBean.get().info("type is " + type);
event = (XspEventHandler) dynamicColumn.getChildren().get(0);
}
I auch eine Ereignisvariable erstellt, dies zu halten:
com.ibm.xsp.component.xp.XspEventHandler event;
Dann, wo ich die Spalte gemacht wollte ich einen Link sein, die ich hinzugefügt:
if (dynamicColumn.getColumnName().equalsIgnoreCase("OrderDate")){
//make it a link
dynamicColumn.setDisplayAs("link");
DebugToolbarBean.get().info("make OrderDate a link");
if (event != null){
dynamicColumn.getChildren().add(event);
DebugToolbarBean.get().info("adding event");
} else {
DebugToolbarBean.get().info("event is null");
}
}
Wenn XPages auf Sie seltsam wirkt, könnten Sie vielleicht ein clientseitiges onclick-Ereignis schreiben, das ein JSON-RPC aufruft. Der JSON-RPC kann dann die Bereichsvariable im Backend festlegen. –
Das ist eine Möglichkeit, da ich CSJS zu der Spalte in der Customizebohne hinzufügen kann, aber das Problem wäre, den Wert für diese Zeile mit CSJS zu erhalten. Dieser Teil könnte schwierig sein ... – Howard
Tricky aber möglich. Sie können den Wert über jQuery erfassen und an den JSON-RPC übergeben. –