Freigeben über


Übermitteln von Daten von einer Seite als Parameter für Ribbon-Aktionen

Anmerkung

In diesem Thema geht es um klassische Befehle.

Es gibt eine neue Möglichkeit, Befehle zu definieren. Siehe Moderne Befehlsübersicht (Vorschauversion)

Wenn Sie eine Aktion in einem Menüband definieren, müssen Sie häufig Daten von der Seite an eine JavaScript-Funktion oder eine URL übergeben. In diesem Artikel werden die Optionen für die Verwendung des <CrmParameter>-Elements zum Abrufen dieser Werte beschrieben.

Formular- und Rasterkontext in Ribbon-Aktionen

Um Ausführungskontextinformationen (Formularkontext oder Rasterkontext) an eine JavaScript-Funktion für Ihre Menübandaktionen zu übergeben, geben Sie PrimaryControl für den Formularkontext oder SelectedControl für den Rasterkontext als <CrmParameter> Wert in der Menübanddefinition an. SelectedControl übergibt den Rasterkontext für Subgrids und Homepageraster. Der übergebene PrimaryControl- oder SelectedControl-Wert wird als Argument in der JavaScript-Funktion für Formularkontext oder Rasterkontext verwendet.

Hier ist beispielsweise eine Beispielmenübanddefinition, in der Sie den PrimaryControl-Parameter an die JavaScript-Funktion übergeben:

<CommandDefinition Id="SampleCommand">
  <EnableRules/>
  <DisplayRules/>
  <Actions>
    <JavaScriptFunction Library="$webresource:new_mySampleScript.js" FunctionName="mySampleFunction">
      <CrmParameter Value="PrimaryControl" />
    </JavaScriptFunction>
  </Actions>
</CommandDefinition>

Definieren Sie als Nächstes in der new_mySampleScript.js Webressourcendatei, auf die im vorherigen Beispiel verwiesen wird, die JavaScript-Funktion mit der primaryControl-Variablen als Argument. Dieses Argument liefert den Formularkontext, in dem der Ribbon-Befehl ausgeführt wird:

function mySampleFunction(primaryControl) {
    var formContext = primaryControl;
    // Perform operations using the formContext object
}

Sie können auch CommandProperties als <CrmParameter> Wert in der Menübanddefinition angeben, um Informationen über das Ereignis vom Menübandsteuerelement zu übermitteln. Verwenden Sie diesen Parameter, um Kontextinformationen an Ihre JavaScript-Funktion zu senden, in der bestimmte Aktionen basierend auf dem Kontext des Ereignisses bestimmt werden können.

Anmerkung

Formularkontext und Rasterkontext für JavaScript-Funktionen für Menübandaktionen abzurufen, ist jedoch unterschiedlich vom Abrufen dieser Werte in Formularskripts. Informationen über Formularskripts und wie Sie diese Kontexte erhalten, finden Sie unter Client API Formularkontext und Client API Rasterkontext.

Formularwerte

Mithilfe eines Formularmenübands können Sie die data.entity.attributes-Sammlung und die ui.Steuerelemente-Sammlung verwenden, um Werte für bekannte Spalten abzurufen und festzulegen.

Der folgende Beispielcode zeigt beispielsweise, wie die Spalte "Kontoname" im Kontoformular abgerufen und dann basierend auf dem Kontonamenswert ein Wert in der Websiteurl-Spalte festgelegt wird:

function mySampleFunction(primaryControl) {
    var formContext = primaryControl;    
    var accountName = formContext.getControl("name").getAttribute().getValue();    

    // Set the WebSiteURL column if account name contains "Contoso"
    if (accountName.toLowerCase().search("contoso") != -1) {
        formContext.getAttribute("websiteurl").setValue("https://www.contoso.com");
    }
    else {
        Xrm.Navigation.openAlertDialog({ text: "Account name does not contain 'Contoso'." });
    }
}

Rasterwerte

Die meisten Werte für das <CrmParameter> Element beziehen sich auf das Arbeiten mit Daten, die in einem Raster- oder Hierarchiediagramm angezeigt werden. Durch Verwendung der Value Paramteraufzählungsoptionen können Sie problemlos Elemente isolieren, indem Sie folgendermaßen vorgehen:

  • Ausgewählte Elemente

    • SelectedControlSelectedItemCount
    • SelectedControlSelectedItemIds
    • SelectedControlSelectedItemReferences
  • Alle Elemente

    • SelectedControlAllItemCount
    • SelectedControlAllItemIds
    • SelectedControlAllItemReferences
  • Nicht ausgewählte Elemente

    • SelectedControlUnselectedItemCount
    • SelectedControlUnselectedItemIds
    • SelectedControlUnselectedItemReferences

    Für jede dieser Gruppierungen können Sie die Anzahl der Elemente und den GUID-Bezeichner sammeln. Wenn Sie die Werte an eine URL übergeben, können Sie auch Objekte abrufen EntityReference , die alle Informationen enthalten, die Sie benötigen, um die Objekte im Raster eindeutig zu identifizieren. Diese Parameter treffen zu, wenn die angezeigte Seite das das Hauptraster (HomepageGrid) oder ein Unterraster in einem Formular ist. Wenn Sie zusammen mit dem SelectedEntityTypeName Parameter verwendet werden, verfügen Sie über alle Informationen, die Sie an eine andere Anwendung übergeben müssen.

Andere Kontextinformationen

Zusätzlich zu den Datenwerten können Sie zusätzliche Client-Kontextinformationen abrufen, indem Sie <CrmParameter> verwenden. Die folgenden Optionen können als Wert für das CrmParameter Element: OrgName, OrgLcidund UserLcid verwendet werden.

Für eine <Url> Aktion können Sie auch das PassParams verwenden, um kontextbezogenene Informationen zu berücksichtigen.

Die Value Optionen PrimaryEntityTypeName und FirstPrimaryItemId stellen Informationen zu einem Tabellendatensatz zur Verfügung. Sie können PrimaryItemIds für ein HomepageGrid-Menüband verwenden, um eine Liste aller angezeigten Elemente zu erhalten.

Siehe auch

Anpassen des Menübands
Parameter mit dem Menüband an eine URL übergeben
Definieren von Menübandaktionen
Festlegen benutzerdefinierter Aktionen zur Änderung des Menübands
Formularkontext der Client-API
Rasterkontext der Client-API