Udostępnij za pośrednictwem


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.

  1. Tworzenie składnika kodu o nazwie ColumnHeader
  2. Tworzenie pliku zasobu i dodawanie tłumaczeń
  3. Implementacja manifestu
  4. Implementowanie logiki składnika
  5. 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.

  1. Utwórz folder o nazwie strings w folderze ColumnHeader .

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

    Zrzut ekranu nazw kolumn w kroku **Układ** konfiguracji 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.

  1. Otwórz plik ControlManifest.Input.XML.

  2. 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" />

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

  1. Otwórz plik index.ts.

  2. 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);
        }
    

Następne kroki