Übung – Tabellendaten aus dem Clientskript verwenden

Abgeschlossen

In dieser Übung implementieren Sie mit Clientskript die Geschäftsanforderung zum Erstellen von Spalten im benötigten Formular basierend auf den Werten in einer verknüpften Tabelle. Sie legen das Anforderungsniveau der Spalten im Ideenformular in der Innovationsherausforderungs-Beispiel-App basierend auf dem Wert der Spalten in der Herausforderungstabelle fest. Sie verwenden die Xrm.WebAPI-Methoden zum Abrufen der zugehörigen Daten, um dies zu erreichen.

Wichtig

Verwenden Sie eine Testumgebung mit bereitgestelltem Microsoft Dataverse und aktivierten Beispiel-Apps. Wenn Sie keine Testumgebung haben, können Sie sich für den Community-Plan anmelden.

Aufgabe 1 – Die Lösung vorbereiten

In dieser Aufgabe erstellen Sie eine Lösung, fügen vorhandene Tabellen sowie neue Spalten hinzu und bereiten das Hauptformular einer der der Lösung hinzugefügten Tabellen vor.

  1. Navigieren Sie zum Power Apps Maker Portal, und überprüfen Sie, ob Sie sich in der richtigen Umgebung befinden, in der die Beispiel-Apps aktiviert sind.

    Screenshot des Umgebungsnamens der Entwicklungsübungen

  2. Wählen Sie Lösungen und dann + Neue Lösung aus.

  3. Geben Sie Innovationsherausforderung-Web-API für Anzeigename ein, wählen Sie CDS Default Publisher für Herausgeber und dann Erstellen aus.

    Screenshot des Fensters „Neue Lösung“ mit Eigenschaften

  4. Die von Ihnen erstellte Lösung Innovationsherausforderung-Web-API sollte geöffnet werden.

  5. Wählen Sie Vorhandenes hinzufügen und dann Tabelle aus.

  6. Geben Sie eine Idee in das Suchtextfeld ein, und klicken Sie auf Idee und dann auf Weiter.

    Hinweis

    Wenn Sie die Tabelle Idee nicht finden können, sind die Beispiel-Apps eventuell nicht in Ihrer Umgebung vorhanden. Wählen Sie eine andere Umgebung aus, oder erstellen Sie mithilfe der installierten Beispiel-Apps eine neue.

  7. Wählen Sie die Schaltfläche Objekte auswählen aus.

    Screenshot der Schaltfläche „Komponenten auswählen“

  8. Wählen Sie zuerst die Registerkarte Formulare, danach das Formular Informationen vom Formulartyp Haupt und schließlich Hinzufügen aus.

    Screenshot des Fensters „Komponente hinzufügen“

  9. Wählen Sie erneut Hinzufügen aus.

  10. Wählen Sie + Vorhandene hinzufügen und dann erneut Tabelle aus.

    Screenshot des Menüs „Vorhandene Tabelle zur Lösung hinzufügen“

  11. Geben Sie eine Suche nach einer Herausforderung ein, wählen Sie Herausforderung aus, und klicken Sie dann auf Weiter.

  12. Wählen Sie die Schaltfläche Objekte auswählen aus.

    Screenshot der Schaltfläche „Komponentenlinks auswählen“

  13. Wählen Sie zuerst die Registerkarte Formulare, danach das Formular Informationen vom Formulartyp Haupt und schließlich Hinzufügen aus.

    Screenshot der Registerkarte „Formulare“ mit dem Formular „Informationen“ als Haupt ausgewählt

  14. Wählen Sie erneut Hinzufügen aus.

  15. Öffnen Sie die Tabelle Herausforderung, die Sie gerade der Lösung hinzugefügt haben.

  16. Wählen Sie erst + Neu und dann Spalte aus. Sie fügen zwei Spalten hinzu, um anzugeben, welche Daten für Ideenzeilen benötigt werden, die für diese Herausforderung erstellt wurden.

    Screenshot der Schaltfläche „Tabelle Spalte hinzufügen“

  17. Geben Sie Investition erforderlich als Anzeigename ein, wählen Sie Auswahl | Ja/Nein als Datentyp aus, und erweitern Sie Erweiterte Optionen. Notieren Sie sich das Präfix des Schemanamens. Ihr Präfix ist anders. Sie brauchen dies, wenn Sie das Skript erstellen und auf die von Ihnen hinzugefügten Felder verweisen.

    Screenshot des Namenfelds mit hervorgehobenem Präfix

  18. Wählen Sie Speichern aus.

  19. Wählen Sie erst + Neu und dann erneut Spalte aus.

  20. Geben Sie ROI erforderlich als Anzeigename ein, wählen Sie Auswahl | Ja/Nein als Datentyp aus, und klicken Sie auf Speichern.

  21. Erweitern Sie die Tabelle Herausforderung auf der linken Seite, und wählen Sie dann Formulare aus.

  22. Öffnen Sie das Formular Informationen, das Sie gerade der Lösung hinzugefügt haben.

  23. Wählen Sie die Registerkarte Tabellenspalten aus.

    Screenshot der Registerkarte „Tabellenspalten“

  24. Fügen Sie dem Formular die Spalte Investition erforderlich hinzu.

  25. Fügen Sie dem Formular die Spalte ROI erforderlich hinzu.

  26. Das Formular sollte nun wie in diesem Bild aussehen. Wählen Sie Speichern und veröffentlichen aus. Warten Sie darauf, bis die Veröffentlichung abgeschlossen ist.

    Screenshot der Schaltfläche „Formularänderungen speichern“

  27. Klicken Sie auf die Schaltfläche „Zurück“, um zur Lösung zurück zu wechseln.

    Screenshot der Schaltfläche „Zurück zur Lösung“

Aufgabe 2 – Das Client-Skript erstellen

In dieser Aufgabe erstellen Sie ein Skript, das die erforderliche Ebene für Spalten in der Ideentabelle basierend auf den Spaltenwerten der Herausforderungstabellen festlegt.

  1. Starten Sie eine neue Instanz von Visual Studio Code, oder verwenden Sie Ihren bevorzugten Code-Editor. Sie können Visual Studio Code herunterladen und installieren.

  2. Wählen Sie Ordner öffnen aus.

    Screenshot der Schaltfläche „Ordner öffnen“

  3. Erstellen Sie einen Ordner in Ihrem Dokumentenordner, und nennen Sie ihn ClientScriptLab.

  4. Wählen Sie den von Ihnen erstellten Ordner ClientScriptLab, und klicken Sie dann auf die Schaltfläche Ordner auswählen.

    Screenshot des Ordners „ClientScriptLab“ und der Schaltfläche „Ordner auswählen“

  5. Bewegen Sie den Mauszeiger über den Ordner CLIENTSCRIPTLAB und klicken Sie dann auf Neue Datei.

    Screenshot der Schaltfläche „Neue Datei“

  6. Nennen Sie die Datei IdeaForm.js.

  7. Fügen Sie IdeaForm.js die folgenden Funktionen hinzu. Ihre Funktionen sollten eindeutige Namen haben oder die Eindeutigkeit durch einen Namespace sicherzustellen.

    function LearnLab_handleIdeaOnLoad(executionContext) {
    }
    function LearnLab_handleChallengeOnChange(executionContext) {
    }
    
  8. Fügen Sie der Funktion OnLoad das Skript hinzu. Dieses Skript registriert einen Ereignishandler OnChange, Sie müssen Änderungen verarbeiten, falls sich die zugehörige Herausforderung ändert.

    var formContext = executionContext.getFormContext();
    formContext.getAttribute('sample_originatingchallengeid').addOnChange(LearnLab_handleChallengeOnChange);
    

    Screenshot der Funktion „onload“

  9. Fügen Sie der Funktion OnChange das Skript hinzu. Dieser Code ruft einfach formContext ab.

    var formContext = executionContext.getFormContext();
    
  10. Fügen Sie der Datei IdeaForm die Funktion hinzu. Diese Funktion wird sowohl von OnLoad‑ als auch von OnChange-Funktionen aufgerufen und formContext wird als Argument übergeben. Hier implementieren Sie die Geschäftslogik, um die Anforderungsebenen festzulegen.

    function LearnLab_setRequiredFields(formContext) {
    }
    
  11. Zuerst erhalten Sie die Suchwerte für die Herausforderung. Fügen Sie der Funktion setRequiredFields das Skript hinzu. Wir haben sample_originatingchallengeid aus den Eigenschaften der Spalte im Projektmappen-Explorer.

    var challenge = formContext.getAttribute('sample_originatingchallengeid').getValue();
    
  12. Sie werden dann prüfen, ob der Wert Herausforderung null ist. Fügen Sie der Funktion setRequiredFields das Skript hinzu.

    if (challenge != null) {
        }
        else{
        }
    
  13. Wenn die Herausforderung null ist, machen Sie die Spalten nicht erforderlich. Fügen Sie else diesem Skript hinzu. So wird sichergestellt, dass die Spalten nicht benötigt werden, wenn keine Herausforderung ausgewählt ist.

    formContext.getAttribute("sample_investmentrequired").setRequiredLevel('none');
    formContext.getAttribute("sample_timetoroimonths").setRequiredLevel('none');
    
  14. Ihre IdeaForm sollte nun wie in diesem Bild aussehen.

    Screenshot der IdeaForm des hinzugefügten Skripts

  15. Wenn die Herausforderung nicht null ist, erhalten die ID der zugehörigen Herausforderung. Fügen Sie in der Aussage if dieses Skript hinzu.

    var challengeId = challenge[0].id;
    
  16. Sie rufen nun mit WebAPI die Herausforderungszeile ab und wählen Sie nur die beiden Spalten aus, die Sie in InvestmentRequired und ROIRequired interessieren. Fügen Sie in der Aussage „if“ das Skript hinzu.

    Hinweis

    Ersetzen Sie crc8c mit Ihrem Präfix aus Aufgabe 1.

    Xrm.WebApi.retrieveRecord("sample_challenge", challengeId, "?$select=crc8c_investmentrequired,crc8c_roirequired").then(
                function success(result) {
                },
                function (error) {
                }
            );
    
  17. Wenn der retrieveRecord erfolgreich ist, erstellen Sie zunächst zwei Variablen, die die Anforderungswerte für beide Spalten umfassen, und legen ihren Anfangswert auf „nicht erforderlich“ fest. Dann überprüfen Sie im Anschluss, ob die Spalten benötigt werden und richten die Anforderungsvariable entsprechend ein. Abschließend legen Sie die Spaltenanforderung auf den Wert der Variablen fest, die Sie erstellt haben. Fügen Sie in der Funktion Success das Skript hinzu. Ersetzen Sie das prefix cr07c_ für cr07c_investmentrequired and cr07c_roirequired durch das Präfix der Spalten, die Sie erstellt haben.

    Hinweis

    Ersetzen Sie crc8c mit Ihrem Präfix aus Aufgabe 1.

    var investmentRequired = 'none';
    var roiRequired = 'none';
    if (result.cr07c_investmentrequired) {
        investmentRequired = 'required';
    }
    if (result.cr07c_roirequired) {
        roiRequired = 'required';
    }
    formContext.getAttribute("sample_investmentrequired").setRequiredLevel(investmentRequired);
    formContext.getAttribute("sample_timetoroimonths").setRequiredLevel(roiRequired);
    
  18. Sie werden die Fehlermeldung protokollieren, wenn retrieveRecord einen Fehler verursacht. Fügen Sie in der Fehler-Funktion das Skript hinzu. Sie können auch Methoden von Xrm.Navigation nutzen, um dem Benutzer bei Bedarf einen Dialog mit entsprechenden Optionen anzuzeigen.

    console.log(error.message);
    
  19. Die Funktion LearnLab_setRequiredFileds sollte nun wie in diesem Bild aussehen.

    Screenshot der abgeschlossenen Funktion

  20. Sie werden LearnLab_setRequiredFileds von beiden Funktionen OnLoad und OnChange abrufen. Fügen Sie den Funktionen OnLoad und OnChange dieses Skript hinzu.

    LearnLab_setRequiredFields(formContext)
    
  21. Ihre IdeaForm sollte nun wie in diesem Bild aussehen.

    Screenshot des Skripts Vollständiges Ideenformular

  22. Wählen Sie Datei und Alle speichern aus.

Aufgabe 3 – Das Skript hochladen

In dieser Aufgabe laden Sie das von Ihnen erstellte Skript in Ihre Umgebung hoch.

  1. Navigieren Sie zum Power Apps Maker Portal, und überprüfen Sie, ob Sie sich in der richtigen Umgebung befinden.

  2. Wählen Sie Lösungen aus, und klicken Sie darauf, um die Lösung Innovationsherausforderungs-Web-API zu öffnen.

  3. Klicken Sie auf + Neu, und wählen Sie dann Weitere | Webressource aus.

    Screenshot der Schaltfläche „Neue Webressource hinzufügen“

  4. Geben Sie IdeaForm.js als Name sowie IdeaForm.js als Anzeigename ein, wählen Sie dann Java script (JS) als Typ aus, und wählen Sie dann Datei auswählen aus.

    Screenshot der Schaltfläche „Webressourcendatei auswählen“

  5. Wählen Sie die von Ihnen zuvor erstellte Datei IdeaForm.js aus und klicken Sie dann auf Öffnen.

  6. Wählen Sie Speichern aus.

  7. Ihre Lösung sollte nun über die Tabelle Herausforderung, die Tabelle Idee und die Webressource IdeaForm.js verfügen.

  8. Navigieren Sie nicht von dieser Seite weg.

Aufgabe – Das Formular bearbeiten

In dieser Aufgabe fügen Sie dem Hauptformular für Idee eine JavaScript-Bibliothek und einen Ereignishandler für das On Load-Ereignis hinzu.

  1. Stellen Sie sicher, dass Sie sich immer noch in der Lösung Innovationsherausforderungs-Web-API befinden.

  2. Wählen Sie die Tabelle Idee und dann Formulare aus.

  3. Öffnen Sie das Formular HauptInformationen.

  4. Wählen Sie dann die Registerkarte Von Bibliotheken aus.

  5. Wählen Sie + Bibliothek hinzufügen aus.

    Screenshot der Schaltfläche „Formular Bibliothek hinzufügen“

  6. Geben Sie in das Suchtextfeld eine Idee ein, und drücken Sie die Eingabetaste. Wählen Sie IdeaForm.js und dann Hinzufügen aus.

    Screenshot zur Schaltfläche „JavaScript-Bibliothek hinzufügen“

  7. Wählen Sie die Registerkarte Ereignisse rechts aus.

  8. Erweitern Sie den Abschnitt On Load, und wählen Sie dann + Ereignishandler aus.

    Screenshot der Schaltfläche „Ereignishandler hinzufügen“

  9. Geben Sie LearnLab_handleIdeaOnLoad als Funktion ein, markieren Sie das Kontrollkästchen Ausführungskontext als ersten Parameter übergeben, und wählen Sie dann Fertig aus.

    Screenshot des Fensters „Ereignis konfigurieren“

  10. Wählen Sie Speichern und veröffentlichen aus, und warten Sie, bis die Veröffentlichung abgeschlossen ist.

  11. Wählen Sie die Schaltfläche Zurück aus.

  12. Wählen Sie Alle aus.

  13. Wählen Sie Alle Anpassungen veröffentlichen aus, und warten Sie, bis die Veröffentlichung abgeschlossen ist.

Aufgabe – Testen

In dieser Aufgabe testen Sie Ihr Skript.

  1. Navigieren Sie zum Power Apps Maker Portal, und überprüfen Sie, ob Sie sich in der richtigen Umgebung befinden.

  2. Klicken Sie auf Apps, um die Anwendung Innovationsherausforderung zu starten.

  3. Klicken Sie auf Herausforderungen, und öffnen Sie eine der Zeilen Herausforderung.

  4. Investition erforderlich und ROI erforderlich sollten leer sein. Wählen Sie Zugehörige und dann Ideen aus.

    Screenshot des Menüs „Zugehörige Ideen“

  5. Öffnen Sie eine der Ideen.

    Screenshot des Menüs „Zugehörige Idee Tiny Homes“

  6. Löschen Sie die Spaltenwerte Investition erforderlich und Zeit bis zu ROI (Monate).

  7. Die Spalten sind nicht erforderlich, da die Anforderungsspalten in der Herausforderungstabelle leer sind. Wählen Sie die Schaltfläche „Zurück“ aus.

    Screenshot der Schaltfläche „Zurück“ oben links

  8. Wählen Sie die Details-Registerkarte und dann Ja sowohl für Investition erforderlich als auch ROI erforderlich aus.

    Screenshot der auf Ja gesetzten Anforderungen

  9. Wählen Sie die Registerkarte Ideen aus, und öffen Sie dieselbe Idee, die Sie beim letzten Mal ausgewählt haben.

  10. Die beiden Spalten sollten nun erforderlich sein.

    Screenshot der Felder „Investition erforderlich“ und „Zeit bis zu ROI“.