Delen via


Kolomkoppen in het prognoseraster aanpassen

U kunt kolomkoppen in het prognoseraster aanpassen met Power Apps-codeonderdelen. U kunt bijvoorbeeld de kolomnaam vertalen of knopinfo toevoegen voor extra context.

Licentie- en rolvereisten

Vereistetype U moet over het volgende beschikken
Licentie Dynamics 365 Sales Premium of Dynamics 365 Sales Enterprise
Meer informatie: Dynamics 365 Sales-prijzen
Beveiligingsrollen Systeembeheerder of -aanpasser
Meer informatie: Vooraf gedefinieerde beveiligingsrollen voor Verkoop

De koptekst aanpassen

Aan de hand van een voorbeeld kunnen we meer inzicht krijgen in de aanpassingen. We voegen de Franse vertaling toe voor de kolomnamen Prognose en Binnengehaald in het prognoseraster.

  1. Een codeonderdeel maken met de naam ColumnHeader
  2. Een resourcebestand maken en vertalingen toevoegen
  3. Het manifest implementeren
  4. De onderdeellogica implementeren
  5. Het onderdeel bouwen en verpakken

Een resourcebestand maken en vertalingen toevoegen

Nadat u het codeonderdeel hebt gemaakt, wordt de map ColumnHeader gemaakt in het pad dat u hebt opgegeven. Laten we een resourcebestand maken en de Franse vertalingen toevoegen aan het bronbestand.

  1. Maak een map met de naam strings onder de map ColumnHeader.

  2. Kopieer de volgende code naar een nieuw bestand, ColumnHeader.1036.resx.

    Notitie

    Het getal 1036 in de bestandsnaam is de taalcode voor Frans. Raadpleeg dit artikel voor een lijst met taalcodes.

    <?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>
    

    In het bovenstaande codevoorbeeld worden de kolomnamen voor Prognose en Binnengehaald overschreven door de Franse vertalingen Prévision en Gagné in het knooppunt <data>.

    Notitie

    Geef in de parameter name de exacte kolomnaam op die u hebt geconfigureerd in de stap Indeling van de prognose.

    Een schermopname van de kolomnamen in de stap **Indeling** van de prognoseconfiguratie

    Als u de kolomnaam in andere talen wilt vertalen, maakt u een resourcebestand voor elke taal waarnaar u wilt vertalen. Zorg dat de naam van het resourcebestand de volgende naamgevingsconventie gebruikt:

    filename.languagecode.resx  
    **Example file name for German:** ColumnHeader.1031.resx
    

Het manifest implementeren

Vervolgens passen we het manifestbestand aan om de eigenschap op te geven die we overschrijven. In ons voorbeeld overschrijven we de eigenschap ColumnName. We geven ook het pad op naar het resourcebestand dat de vertaalde tekst bevat.

  1. Open het bestand ControlManifest.Input.XML.

  2. Zoek naar het knooppunt property en vervang dit door de volgende code:

    <property name="columnName" display-name-key="Property_Display_Key" description-key="Property_Desc_Key" of-type="SingleLine.Text" usage="bound" required="true" />

  3. Werk het knooppunt <resources> bij om het pad op te geven naar het resourcebestand dat de Franse vertalingen bevat:

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

    Het knooppunt <resx path> bevat het pad naar het resourcebestand. In het voorgaande codevoorbeeld hebben we het resourcebestand voor de Franse taal toegevoegd. Als u vertalingen voor andere talen hebt, voegt u ook het resourcebestandspad voor die talen toe.

De onderdeellogica implementeren

Laten we de code toevoegen om de onderdeellogica in het bestand index.ts te implementeren.

  1. Open het bestand index.ts.

  2. Voeg de volgende regels toe in de methode 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);
        }
    

Volgende stappen