Dynamics AX 2012 - Benutzerdefinierte Suche in einem dialog
So, ich arbeite an einer Klasse namens DMFWriteExportData
und versuchen, es laufen im Batch.
Ich bin an einem Punkt, wo ich brauche, um herauszufinden, einen Weg, um loszuwerden, fieldControl und der Grund dafür ist es nicht lassen Sie mich Führen Sie die Klasse auf dem server und gibt eine Fehlermeldung aus, weil es nicht ausgeführt werden soll auf dem server? (nicht sicher)
Error: "The method Dialog Control.control cannot be called from the server; use methods on the Dialog Field class instead."
-
public Object dialog()
{
DialogRunbase dialog = new DialogRunbase("@DMF372", this);
FormStringControl control;
dialogExecution = dialog.addFieldValue(extendedTypeStr(dMFExecutionId), executionId);
control = dialogExecution.fieldControl();
control.mandatory(true);
control.displayLength(24);
control.registerOverrideMethod(methodstr(FormStringControl, lookup), methodstr(DMFWriteExecutionParameters, executionIdLookup), this);
control.registerOverrideMethod(methodstr(FormStringControl, modified), methodstr(DMFWriteExecutionParameters, executionIdModified), this);
dialogdescription=dialog.addFieldValue(extendedTypeStr(description),DMFExecution::find(executionId).Description);
dialogdescription.enabled(false);
return dialog;
}
Frage ich mich:
- Wenn es tatsächlich wahr ist, dass diese Klasse keine server
bei der Verwendung von Steuern.registerOverrideMethod - Wenn ja, was wäre die ideale Lösung, diese situation zu überwinden,
gibt es eine Möglichkeit, ich kann Sie benutzerdefinierte Suchvorgänge? Ich sehe, es ist Methode
genannt registerOverrideMethod in der DialogField Klasse.
Jede Hilfe würde geschätzt werden.
Dank,
Khosla
InformationsquelleAutor khosla | 2014-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Grund, warum Sie nicht (und sollten) führen Sie den obigen code in der batch ist, weil es verwendet die Dialogfeld-Steuerelemente, die existieren nur auf der client-Seite. Sie sollten nie diese Art von code auf dem server. Bitte überprüfen Sie
runon
Eigenschaft der Klasse ist, und legen Sie ihn genannt.Aber ich nehme an, Sie sind mit RunBaseBatch. Wenn Sie auf AX 2012, sollten Sie die SysOperation Rahmen statt.
Bei der Verwendung von RunBaseBatch, alle code ist auf der gleichen Klasse. Auf diese Weise, Sie mischen client-side code (
main
Methodedialog
- Methode, etc) mit dem code, der ausgeführt werden soll auf dem server (run
- Methode). Aus diesem Grund sollten Sie die "runon" - Eigenschaft der Klasse, die CalledFrom, nicht Server.Sie können dieses Problem durch die Verwendung
SysOperation
gilt das Model-View-Controller (MVC) Muster, ordentlich, sepperates die beiden.Für eine Einführung in SysOperation, überprüfen Sie mein blog hier:
AX2012: SysOperation Einführung
InformationsquelleAutor Klaas Deforche