Compartir por


Personaliza as cabeceiras das columnas na grella de previsión

Podes personalizar as cabeceiras de columnas na grella de previsións mediante compoñentes de código Power Apps . Por exemplo, pode traducir o nome da columna ou engadir unha información sobre ferramentas para obter contexto adicional.

Requisitos de licenza e rol

Tipo de requisito Hai que ter
Licenza Dynamics 365 Sales Premium ou Dynamics 365 Sales Enterprise
Máis información: Dynamics 365 Prezos de vendas
Roles de seguridade Administrador do sistema ou personalizador
Máis información: Funcións de seguridade predefinidas para vendas

Como personalizar a cabeceira

Imos entender as personalizacións cun exemplo. Engadiremos a tradución ao francés dos nomes das columnas Previsión e Won na grella de previsións.

  1. Crea un compoñente de código co nome ColumnHeader
  2. Crea un ficheiro de recursos e engade traducións
  3. Implementar o manifesto
  4. Implementar a lóxica dos compoñentes
  5. Construír e empaquetar o compoñente

Crea un ficheiro de recursos e engade traducións

Despois de crear o compoñente de código, créase o cartafol ColumnHeader no camiño que especificaches. Imos crear un ficheiro de recursos e engadir as traducións ao francés no ficheiro de recursos.

  1. Crea un cartafol chamado strings baixo o cartafol ColumnHeader .

  2. Copia o seguinte código nun ficheiro novo, ColumnHeader.1036.resx.

    Nota

    O número 1036 no nome do ficheiro é o código de idioma para o francés. Para obter unha lista de códigos de idiomas, consulta este artigo.

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

    Na mostra de código anterior, os nomes das columnas de Previsión e Won anúlanse coas traducións ao francés Prévision e Gagné respectivamente no <data> nodo.

    Nota

    No parámetro name especifique o nome exacto da columna que configurou no Disposición paso da previsión.

    Unha captura de pantalla dos nomes das columnas no ficheiro **Maquetación**  paso da configuración de previsión

    Se queres traducir o nome da columna a idiomas adicionais, crea un ficheiro de recursos para cada idioma ao que queres traducir. Asegúrese de que o nome do ficheiro de recursos utiliza a seguinte convención de nomenclatura:

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

Implementar o manifesto

A continuación, modificaremos o ficheiro de manifesto para especificar a propiedade que estamos a substituír. No noso exemplo, anulamos a propiedade ColumnName . Tamén especificaremos o camiño ao ficheiro de recursos que contén o texto traducido.

  1. Abre o ficheiro ControlManifest.Input.XML .

  2. Busca o property nodo e substitúeo polo seguinte código tal e como está:

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

  3. Actualiza o <resources> nodo para especificar o camiño ao ficheiro de recursos que inclúe as traducións ao francés:

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

    O <resx path> nodo contén a ruta do ficheiro de recursos. Na mostra de código anterior, engadimos o ficheiro de recursos para o idioma francés. Se tes traducións para outros idiomas, engade tamén a ruta do ficheiro de recursos para eses idiomas.

Implementar a lóxica dos compoñentes

Engadimos o código para implementar a lóxica do compoñente no ficheiro index.ts .

  1. Abra o ficheiro index.ts .

  2. Engade as seguintes liñas no método 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);
        }
    

Pasos seguintes