Tabellen in Formularen
Tabellen in Formularen können genutzt werden um aus einer Menge von Datensätzen einen auszuwählen und dann weiter zu verarbeiten. Ein typischer Anwendungsfall ist z.B. die Auswahl eines Benutzers aus einem Teil der Organisation. So möchte man zuweilen aus den Benutzern eines Bereiches oder einer Gruppe genau einen auswählen, und im Rahmen eines Geschäftprozesses eine E-Mail automatisiert versenden. Ein Tabelle könnte wie folgt aussehen:
Das Skript um die Daten in die Tabelle zu laden wird dabei im Callback des Buttons "Load User" ausgeführt:
var userArrayMap=com.proxemo.todo.client.base.ToDoClientOMCache.getInstance().getUserOfOrganizationById(2);
if (userArrayMap != null && userArrayMap.size()>0)
{
var userArray = userArrayMap.values().toArray();
// store user in values
var users=new java.util.HashMap();
for (var i=0; i<userArray.length;++i)
{
var values = new StringArray(2);
var user = userArray[i];
var key = user.getLastname();
values[0]=key;
values[1]=user.getEmail();
users.put(key, values);
}
//set all user into table
helper.setFormValue(form.getMetaName(), "userTable",users);
var widget = helper.getWidget(form, "userTable");
widget.setSortingColumn(1,true);
}
Hierbei werden über die Methode getUserOfOrganizationById alle Benutzer aus dem Bereich mit der Id 2 ermittelt und anschließend in die Tabelle eingespielt. Möchte man nur die Benutzer einer Gruppe auslesen, so kann man mit der Methode getUserOfWorkgroupById auf diese zugreifen. Will man jetzt automatisch das Textfeld unterhalb der Tabelle immer dann füllen, wenn eine Zeile ausgewählt wird, so muss man das Callback der Tabelle entsprechend anweisen:
if (emailValue != null)
{
helper.setFormValue(form.getMetaName(),"email",emailValue[1]);
}