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 Elements
  • Title Der EntityTitle des gewählten Elements
  • Type Der OrmType 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-Konfigurationen
  • SelectedTokens 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 Typs BA.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 wie MultiSelect = 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 Typen BA.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.