Es ist möglich beliebige Datensätze in Dialogen mit Hilfe von Masken zu bearbeiten. Beispielsweise wird diese Möglichkeit in den Detailansichten der Masken genutzt, wenn dies entsprechend konfiguriert ist.
Prinzipiell ist es möglich jede konfigurierte Maske in einem Dialog anzeigen zu lassen. Entweder über die Konfiguration oder es wird ein entsprechender Aufruf implementiert.

BA.Ui.Dialog.OrmDialogManager.OpenDialog
BA.Ui.Dialog.OrmDialogManager.OpenDialog(formModel, customData, returnFunc);

Diese Methode öffnet einen Datensatz oder erstellt einen neuen Datensatz in einem Dialog. Das Verhalten wird vom ersten Parameter formModel definiert. Dieser ist vom Typ BA.Ui.Models.FormDialogModel und beinhaltet alle notwendigen Informationen. In einem späteren Abschnitt wird das Objekt genauer beschrieben.
Der zweite Parameter customData ist vom Typ CustomData und wird vom Dialogsystem nicht beachtet. Er wird unverändert der Callback Funktion übergeben.
Der dritte Parameter returnFunc ist die Callback Funktion und wird nach dem Beenden des Dialoges aufgerufen. Signatur der Callback Funktion

function (result: BA.Ui.Dialog.DialogResult, customData: CustomData) { }

Beispiel 1: Selektierter Datensatz in Ansicht im Dialog öffnen

Es wird aus einer Ansicht der selektierte Datensatz ausgelesen. Dieser Datensatz wird mit der Standardmaske geöffnet. Hier eine Funktion, die von einer Ribbon bar Aktion aufgerufen wird.

public static ClientActionMyAction(event: any, customData: CustomData) {
    // Hauptansicht vorhanden?
    if (window["GridView"] != null) {
        // Selektionen holen
        let selected: Object[] = window.GridView.GetSelectedKeysOnPage();
        if (selected.length == 1) {
            // Dialog form model belegen
            var formModel: BA.Ui.Models.FormDialogModel = new BA.Ui.Models.FormDialogModel();
            formModel.RecordId = selected[0] as string;
            formModel.RefreshGridOnSuccess = "GridView";

            // Dialogaufruf
            BA.Ui.Dialog.OrmDialogManager.OpenDialog(formModel, customData,
                function (result: BA.Ui.Dialog.DialogResult, customData: CustomData) {
                    // Wenn der Benutzer gespeichert hat, soll das Grid  aktualisiert werden.
                    if (result.ButtonId == "okButton") {
                        alert("Do something");
                    }
                }
            );
        }
    }
}

Beispiel 2: DialogFormModel auf den Server vorbereiten

Es kann sinnvoll sein das FormDialogModel auf dem Server schon mit den wesentlichen Daten vorzubelegen. Dazu wird das Model erstellt, belegt und serialisiert. Mit Hilfe der AdditionalClientData steht es im Browser zur Verfügung. Dort wird es deserialisiert, evtl. mit weiteren Daten belegt und dem Dialogsystem übergeben.
Beispiel aus einer Ribbon bar Aktion (Server)

public override void AdditionalRibbonButtonAssignment(RibbonButtonItem ribbonItem, EnumActionVisibleForParentTypeValue parentType, DevExUIModelBase uiModel = null)
{
    FormDialogModel dialogModel = new FormDialogModel
    {
        Form = "135dc9db-fd91-407b-93a6-62fc360109b7".ToGuid(),
        ButtonPreset = DialogButtonsOptions.Ok
    };

    AdditionalClientData.AddOrUpdate("JsonFormModel", Api.JsonHelper.Serialize(dialogModel));
    base.AdditionalRibbonButtonAssignment(ribbonItem, parentType, uiModel);
}

Beispiel aus einer Ribbon bar Aktion (Browser)

// Die aktuellen Formdaten holen
let formHiddenData: BA.Ui.Models.FormHiddenDataModel =  BA.Ui.TabController.TabTools.GetCurrentFormHiddenData(null);
// Die AdditionalClientData stehen in Aktionen als customData zur Verfügung
let jsonFormModel: string = customData.JsonFormModel as string;
// JSON string parsen
let formModel: BA.Ui.Models.FormDialogModel = <BA.Ui.Models.FormDialogModel>JSON.parse(jsonFormModel);
// Model um die ID des aktuell offenen Dokumentes erweitern
formModel.RecordId = formHiddenData.RecordId.toString();

// Dialogaufruf
BA.Ui.Dialog.OrmDialogManager.OpenDialog(formModel, null, null);