Eine weitere Art von Standarddialog ist der Auswahldialog oder auch Picklist.
Dieser Dialog dient dazu, Daten möglichst komfortabel aus einer oder mehreren Ansichten anzuzeigen und wählen zu lassen. Die gewählten Daten sind weiterhin optional und situationsabhängig sortierbar.
Dialogtitel und Dialognachricht (über der Auswahl der aktuellen Ansicht) sind optional konfigurierbar; die Nachricht verschwindet, wenn der entsprechende Parameter leer ist, der Dialogtitel zeigt standardmäßig den Text „Auswahl“ an. Beide Werte sind übersetzbar und können eine Guid beinhalten.
Existiert nur eine einzige mögliche Ansicht, entfällt in der UI die Auswahl der aktuellen Ansicht.
Der Dialog hat zwei grundsätzliche Ausprägungen, und zwar die Einzelwert- und die Mehrfachwertauswahl.
Mehrfachwertauswahl
Die Mehrfachwertauswahl bietet die Möglichkeit einen oder mehrere Einträge der gerade angezeigten Ansicht zu selektieren und durch Betätigen der Schaltfläche „Gewählte übertragen“ in den Bereich für gewählte Datensätze zu übernehmen. Alternativ können einzelne Einträge auch durch einen Doppelklick oder per Drag & Drop übernommen werden. Es kann zwischen den zur Verfügung stehenden Ansichten hin und her geschaltet werden, ohne dass die bereits gewählten Einträge verloren gehen. Schon hinzugefügte Einträge werden nicht erneut hinzugefügt, das heißt es ist nicht möglich, doppelte Auswahlen zu treffen. Je nach Konfiguration des Dialogs ist es dem Benutzer möglich, die unter „Gewählte Datensätze“ angezeigten Einträge („Tokens“) mit Hilfe von Drag & Drop umzusortieren.
Einzelwertauswahl
Bei der Einzelwertauswahl ist es im Gegensatz zur Mehrfachauswahl tatsächlich in der angezeigten Ansicht nur möglich einen einzelnen Eintrag auszuwählen. Auch die Anzeige der gewählten Datensätze entfällt. Eine Auswahl des gewählten Datensatzes ist sowohl durch Selektion und anschließendes Betätigen der OK-Schaltfläche als auch durch einen Doppelklick auf den gewünschten Eintrag möglich.
Token
Der Auswahldialog arbeitet sowohl zur Vorauswahl bestimmter Elemente als auch in der Rückgabe mit Objekten des TypeScript-Typs BA.Ui.Controls.Token
.
Dieser ist wie folgt definiert:
export class Token {
constructor(public Oid: string, public Title: string, public Type: string) { }
}
Objekte dieses Typs beinhalten drei essenzielle Eigenschaften:
Oid
Die Guid des gewählten ElementsTitle
DerEntityTitle
des gewählten ElementsType
DerOrmType
des gewählten Elements (falls ermittelbar)
Aufruf eines Auswahldialogs und Auswertung des Ergebnisses
Der programmatische Aufruf eines Auswahldialogs erfolgt über die oben beschriebene Funktion BA.Ui.Dialog.DialogManager.OpenDialog
, die zugehörige Dialog ID lautet BA.Core.Dialogs.PickListDialog. Die Steuerung des Dialogs erfolgt über die mitgegebenen Dialogparameter.
DialogTitle
Optional: Der Titel den der Dialog haben soll.
Guid für Übersetzungen möglich, wenn nicht angegeben, Standardwert „Auswahl“DialogDescription
Optional: Nachricht, die oben als erstes im Dialog über der Ansichten Auswahl angezeigt wird.
Guid für Übersetzungen möglich, wenn nicht angegeben, wird diese Zeile ausgeblendet.DialogSelectionGrids
Zur Auswahl stehende Ansichten-Konfigurationen, zwischen denen in der Picklist umgeschaltet werden kann.
String oder String[] mit Guids von Ansichten-KonfigurationenSelectedTokens
Optional: Bereits gewählte Elemente, die im Bereich „Gewählte Datensätze“ beim Öffnen des Dialogs bereits in der gegebenen Reihenfolge angezeigt werden.
JSON-String, serialisiertes Array von Objekten des TypsBA.Ui.Controls.Token
MultiSelect
Optional: True, wenn mehr als ein Element aus der GridView ausgewählt werden können soll.
Boolean
, Standardwert:true
.Sortable
Optional: True, wenn die ggf. angezeigten Auswahlwerte um sortierbar sein sollen. Das ist abhängig von anderen Konfigurationsparametern, die den Bereich, in dem sortiert werden kann, eventuell ausblenden.
Boolean
, Standardwert:true
MinSelect
Optional: Minimale Anzahl zu selektierender Einträge, muss erfüllt sein, bevor der Dialog mit OK geschlossen werden kann.
Ganzzahl, Standardwert: 0 (keine Beschränkung)MaxSelect
Optional: Maximale Anzahl selektierbarer Einträge, muss erfüllt sein, bevor der Dialog mit OK geschlossen werden kann.
Ganzzahl, Standardwert: 0 (keine Beschränkung)
Ein Wert von 1 hat den gleichen Effekt wieMultiSelect = false
RawResult
Optional: True, wenn der Dialog das resultierende Array von Token-Objekten als serialisierten JSON-String zurückgeben soll.
Boolean
, Standardwert:false
Token haben den TypenBA.Ui.Controls.Token
Beispiel
BA.Ui.Dialog.DialogManager.OpenDialog(
"BA.Core.Dialogs.PickListDialog",
{
DialogTitle: "Meine Auswahl",
DialogDescription: "Bitte wählen",
DialogSelectionGrids: ["12AF9DED-D118-41F5-A050-11D32D879DCB"],
MultiSelect: false
},
{custom: "data"},
function(result, customData) { console.log(result); console.log(customData); }
);
Das Beispiel öffnet in BA.CRM einen Auswahldialog zur Abfrage einer einzelnen E-Mail-Vorlage.
Das Datenfeld des Dialogergebnisses enthält im Normalfall immer ein Array von Objekten des TypeScript-Typs BA.Ui.Controls.Token
, auch, wenn es sich um eine Einzelauswahl gehandelt hat.
Nur, wenn der Dialogparameter RawResult
auf true
mitgegeben wird, liegt im Datenfeld ein String, der das entsprechende Array bereits JSON-serialisiert beinhaltet.
Die Reihenfolge der Objekte im Ergebnis entspricht der Sortierung der Tokens im Dialog.