Dialoge arbeiten nun in der Implementierung nur noch mit Controls, nicht mehr mit MVCxLayoutItems
. Diese werden vom Framework aus der Control-Liste erzeugt.
Das bedeutet, dass die Erstellung einer MVCxFormLayoutItemCollection
per DevExFormLayoutTranslator.Translate
in jedem Fall entfällt.
Daraus resultierend entfällt ebenfalls die Erstellung und Zuweisung eines DevExFormPartModels
(formModel.LayoutPanels.Add
) und das Setzen eines Layouts (formModel.LayoutName
).
Ebenfalls überflüssig ist der Aufruf auf request.ConfigurationId(...)
.
Zuweisungen von formModel.FormGuid
und formModel.FormInDialog
müssen (sollten) entfernt werden. Dieser Wert wird später überschrieben und die Zuweisung ist überflüssig.
Die Methode HandleAction
bleibt unverändert.
Zwei weitere Methoden können nun überschrieben werden, um in abgeleiteten Dialogen Änderungen an den erstellten Controls und an den erstellten MVCxFormLayoutItems
zu machen:
void AfterContentCreated(DevExFormModel formModel, HttpRequestBase request, ModelStateDictionary modelState, Dictionary<string, object> parameter, object bindObject)
Abfolge ist:
CreateDialogContent
- Übernahme von
formModel.DataSource
als bindObject AfterContentCreated
Das bedeutet, dass man in AfterContentCreated
Änderungen an this.Controls
durchführen kann, bevor die Controls in MVCx-Items umgewandelt werden.
Theoretisch erfüllt ein Überschreiben von CreateDialogContent
mit Aufruf von base.CreateDialogContent
den gleichen Zweck, man spart sich bei der Verwendung von AfterContentCreated
allerdings, dass man an den base-Aufruf denken muss, d.h. AfterContentCreated
ist die offizielle Schnittstelle, um Änderungen an den vom Dialog erstellten Controls zu machen.
void AfterControlsRendered(DevExFormModel formModel, HttpRequestBase request)
Hier können Änderungen an den umgewandelten MVCx-Items gemacht werden.
Diese finden sich unter formModel.LayoutPanels
(Liste von DevExFormPartModel
) und sind nach ihrer Hierarchie angeordnet (d.h. wenn man nicht weiß, nach was man wo sucht, muss man wahrscheinlich zunächst FlattenControls
bemühen müssen).