Ich habe eine benutzerdefinierte Schaltfläche im Formular einer benutzerdefinierten Entität hinzugefügt, die beim Klicken den Datensatz dupliziert und den neu erstellten Datensatz in einem neuen Fenster öffnet. Die FormType
des neu erstellten Datensatzes ist update
.CRM2015: Validieren Sie ein Feld beim erstmaligen Aktualisieren eines Formulars
In diesem geöffneten Fenster muss ich wissen, ob die Schaltfläche zum Speichern geklickt wurde. Solange noch nicht geklickt wurde, sollten einige Felder zur Bearbeitung geöffnet sein; Nach dem Anklicken müssen diese Felder deaktiviert werden.
Derzeit habe ich ein (verstecktes) Bitfeld, das angibt, ob der Datensatz ein Duplikat ist, und sein Anfangswert wird auf "True" gesetzt. Auf den ersten Klick auf die Schaltfläche zum Speichern, in meiner onSave
Funktion, setze ich es auf falsch. Zusätzlich habe ich eine onLoad
Funktion, die dieses Feld auf "wahr" prüft (kann nur vorkommen, wenn ein Datensatz einmal dupliziert wurde) oder auf "falsch".
Mein Problem ist ein logischer: Um dieses Feld beim ersten Speichern auf false zu setzen, muss ich bei jedem Klick auf die Schaltfläche save
eine Validierung durchführen (und auch auf nicht duplizierte Datensätze).
Ich dachte, vielleicht kann jemand eine andere, logisch korrekte Art anbieten, die Validierung eines Speichervorgangs nur einmal durchzuführen.
Hier ist der relevante Auszug:
function OnLoad()
{
// some code...
if (Xrm.Page.getAttribute("sln_isduplicate").getValue() == true)
{
// open for edit relevant fields
}
else
{
// close for edit relevant fields
}
// some code...
}
function OnSave()
{
// some code...
if (Xrm.Page.getAttribute("sln_isduplicate").getValue() == true)
{
Xrm.Page.getAttribute("sln_isduplicate").setValue(false);
}
// some code...
}
Lösungen 2 & 3 sind genau das, was ich gesucht habe, danke! – HeyJude