Freigeben über


Zusammengesetztes Spalten

Einige Spalten, die einem Formular hinzugefügt werden, können mehrere Datenelemente darstellen. Diese zusammengesetzten Spalten verhalten Sie sich anders als andere Spalten, wenn sie in der Webanwendung angezeigt werden, und Sie müssen Skripte anders schreiben, um sie ordnungsgemäß zu verwenden.

In der folgenden Tabelle sind die zusammengesetzten Spalten aufgeführt, die in modellgesteuerten Apps verfügbar sind:

Tabelle

Anzeigename

Logischer Name

Konto

Adresse 1

address1_composite

Adresse 2

address2_composite

Kontakt

Vollständiger Name

fullname

Adresse 1

address1_composite

Adresse 2

address2_composite

Lead

Vollständiger Name

fullname

Adresse 1

address1_composite

Adresse 2

address2_composite

Benutzer

Vollständiger Name

fullname

Adresse

address1_composite

Weitere Adresse

address2_composite

Angebot

Rechnungsadresse

billto_composite

Lieferadresse

shipto_composite

Reihenfolge

Rechnungsadresse

billto_composite

Lieferadresse

shipto_composite

Rechnung

Rechnungsadresse

billto_composite

Lieferadresse

shipto_composite

Zusammengesetzte Spalten in der Webanwendung

Wenn zusammengesetzte Spalten zu einem Hauptformular hinzugefügt werden, zeigt die Webanwendung nur die zusammengesetzte Spalte an. Wenn jemand die Spalte bearbeitet, wird ein Flyout mit der einzelnen Spalte angezeigt, aus der die zusammengesetzte Spalte besteht.

Zum Beispiel die Adressen Spalte in einem Kontaktformular ist eine zusammengesetzte Spalte. Auswahl der Adressen Spalte zeigt ein Flyout mit einzelnen Spalten an, aus denen die zusammengesetzte Spalte besteht.

Ein Beispiel für eine zusammengesetzte Spalte.

Obwohl nicht explizit zum Formular in Formular-Editor hinzugefügt, steht jede der Spalten, die Teil der Spalte sind, dem Formular zur Verfügung. Obwohl Sie den Wert des zusammengesetzten Werts mithilfe von getValue lesen können, können Sie setValue nicht verwenden, um den Wert der zusammengesetzten Spalte direkt zu ändern; Sie müssen eine oder mehrere der Spalten festlegen, auf die die zusammengesetzte Spalte verweist.

Sie können auf die einzelnen zugehörigen Steuerelemente zugreifen, die in dem Flyout nach Name angezeigt werden. Diese Steuerelemente verwenden die folgende Namenskonvention: <composite control name>_compositionLinkControl_<constituent column name>.

Um nur auf das address_line1-Steuerelement im address1_composite-Steuerelement zuzugreifen, verwenden Sie:

formContext.getControl("address1_composite_compositionLinkControl_address1_line1")

Zusammengesetzte Spalten in mobilen Clients

Der mobile Client für modellgesteuerte Apps verwendet dieselben Formulardefinitionen für Tabellen mit zusammengesetzten Spalten, interpretiert diese jedoch unterschiedlich. Wenn in der Formulardefinition eine zusammengesetzte Spalte gefunden wird, werden alle Spalten angezeigt, die Teil der zusammengesetzten Spalte in diesem Abschnitt des Formulars sind. Ein Flyout ist nicht erforderlich, da alle Spalten sichtbar sind. Sie können Skripte für das Formular schreiben, die auf jede einzelne Spalte zugreifen, als wären sie einzeln zum Formular hinzugefügt worden. Allerdings ist das eigentliche zusammengesetzte Steuerelement auf der Seite für mobile -Clients in modellgesteuerten Apps nicht vorhanden.

Verringern der Unterschiede

Wenn Sie auf die Spalte mit dem vollständigen Namen für die Tabellen Kontakt, Lead oder Benutzer zugreifen möchten, verwenden Sie die formContext.data.entity. Die getPrimaryAttributeValue-Methode ist eine einfache Möglichkeit, den Wert für diese Spalte abzurufen, ohne direkt darauf zu verweisen. Diese Methode funktoniert sowohl für die Webanwendung als auch für mobile Clients in modellgesteuerten Apps.

Wenn Sie den Code haben, der den Wert einer der zusammengesetzten Adressspalten lesen muss, um mit beiden Clients zu arbeiten, müssen Sie den Code mithilfe der getClient Methode wie in der folgenden Funktion gezeigt trennen, um die formatierte Adresse mit der Xrm.Navigation anzuzeigen. Die openAlertDialog-Methode ist entweder in der Hauptwebanwendung oder in der Version für mobile Apps desselben Formulars.

function showAddressDialog(executionContext) {
    var address1_compositeValue;
    var formContext = executionContext.getFormContext();
    if (Xrm.Utility.getGlobalContext().client.getClient() != "Mobile") {
        address1_compositeValue = formContext.getAttribute("address1_composite").getValue();
    }
    else {
        var address1_line1 = formContext.getAttribute("address1_line1").getValue();
        var address1_line2 = formContext.getAttribute("address1_line2").getValue();
        var address1_line3 = formContext.getAttribute("address1_line3").getValue();
        var address1_city = formContext.getAttribute("address1_city").getValue();
        var address1_stateorprovince = formContext.getAttribute("address1_stateorprovince").getValue();
        var address1_postalcode = formContext.getAttribute("address1_postalcode").getValue();
        var address1_country = formContext.getAttribute("address1_country").getValue();

        // Achieve equivalent formatting
        //address1_line1
        //address1_line2
        //address1_line3
        //address1_city, address1_stateorprovince address1_postalcode
        //address1_country

        var addressText = "";
        if (address1_line1 != null) {
            addressText += address1_line1 + "\n";
        }
        if (address1_line2 != null) {
            addressText += address1_line2 + "\n";
        }
        if (address1_line3 != null) {
            addressText += address1_line3 + "\n";
        }
        if (address1_city != null) {
            addressText += address1_city + ", ";
        }
        if (address1_stateorprovince != null) {
            addressText += address1_stateorprovince + " ";
        }
        if (address1_postalcode != null) {
            addressText += address1_postalcode + "\n";
        }
        addressText += address1_country;

        address1_compositeValue = addressText;
    }
    Xrm.Navigation.openAlertDialog({ text: address1_compositeValue });
    console.log(address1_compositeValue);
}

Verwandte Themen

Spalten

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).