Dostosowanie nagłówków kolumn w siatce prognozy
Nagłówki kolumn w siatce prognozy można dostosowywać, korzystając ze składników kodu Power Apps. Można na przykład przetłumaczyć nazwę kolumny lub dodać etykietkę narzędzia dla dodatkowego kontekstu.
Wymagania dotyczące licencji i ról
Typ wymagania | Musisz mieć |
---|---|
Licencja | Dynamics 365 Sales Premium lub Dynamics 365 Sales Enterprise Więcej informacji: Ceny aplikacji Dynamics 365 Sales |
Role zabezpieczeń | Administrator systemu lub konfigurator Więcej informacji: Predefiniowana role zabezpieczeń dla Sales |
Jak dostosować nagłówek
Spróbujmy zrozumieć dostosowania na podstawie przykładu. W siatce prognozy dodamy tłumaczenie francuskie dla nazw Prognoza i Wykorzystane.
-
Tworzenie składnika kodu o nazwie
ColumnHeader
- Tworzenie pliku zasobu i dodawanie tłumaczeń
- Implementacja manifestu
- Implementowanie logiki składnika
- Kompilacja i pakietowanie składnika
Tworzenie pliku zasobu i dodawanie tłumaczeń
Po utworzeniu składnika kodu pod wskazaną ścieżką jest tworzony folder ColumnHeader
. Utwórzmy plik zasobów i dodajmy do pliku zasobów tłumaczenie na francuski.
Utwórz folder o nazwie
strings
w folderzeColumnHeader
.Skopiuj następujący kod do nowego pliku ColumnHeader.1036.resx.
Uwaga
Numer 1036 w nazwie pliku to kod języka francuskiego. Aby zapoznać się z listą kodów języka, przeczytaj ten artykuł.
<?xml version="1.0" encoding="utf-8"?> <root> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <data name="Forecast" xml:space="preserve"> <value>Prévision</value> </data> <data name="Won" xml:space="preserve"> <value>Gagné</value> </data> </root>
W powyższym przykładzie nazwy kolumn Prognoza i Wykorzystane zostały odpowiednio nadpisane przez tłumaczenie na francuski Prévision i Gagné w węźle
<data>
.Uwaga
W parametrze
name
określ dokładną nazwę kolumny skonfigurowanej w kroku Układ prognozy.Aby przetłumaczyć nazwę kolumny na inne języki, należy utworzyć plik zasobów dla każdego języka, na który będzie trzeba przetłumaczyć. Upewnij się, że w nazwie pliku zasobu jest używana następująca konwencja nazewnictwa:
filename.languagecode.resx **Example file name for German:** ColumnHeader.1031.resx
Implementacja manifestu
Następnie zmodyfikuj plik manifestu, aby określić właściwość, która ma zostać zastąpiona. W naszym przykładzie zastępowaną właściwością jest ColumnName
. Określimy także ścieżkę do pliku zasobu zawierającego przetłumaczony tekst.
Otwórz plik
ControlManifest.Input.XML
.Wyszukaj węzeł
property
i zastąp go następującym gotowym kodem:<property name="columnName" display-name-key="Property_Display_Key" description-key="Property_Desc_Key" of-type="SingleLine.Text" usage="bound" required="true" />
Zaktualizuj węzeł
<resources>
, aby podać ścieżkę do pliku zasobu z tłumaczeniem na francuski:<resources> <code path="index.ts" order="1"/> <!-- UNCOMMENT TO ADD MORE RESOURCES <css path="css/ColumnHeader.css" order="1" /> --> <resx path="strings/ColumnHeader.1036.resx" version="1.0.0" /> </resources>
Węzeł
<resx path>
zawiera ścieżkę pliku zasobów. W powyższym przykładzie kodu dodano plik zasobów dla języka francuskiego. Jeśli masz tłumaczenia na inne języki, dodaj także ścieżkę do pliku zasobów dla tych języków.
Implementowanie logiki składnika
Dodamy kod w celu zaimplementowania logiki składnika w pliku index.ts
.
Otwórz plik
index.ts
.W sposobie należy dodać następujące wiersze
updateView
:public updateView(context: ComponentFramework.Context<IInputs>): void { // Add code to update control view const colName = (context.parameters.columnName && context.parameters.columnName.raw) || ""; this._container.innerHTML = context.resources.getString(colName); }