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.
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
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).