Personalizar os cabeçalhos de coluna na grelha de previsão
Pode personalizar os cabeçalhos de coluna na grelha de previsão utilizando componentes de código do Power Apps. Por exemplo, pode traduzir o nome da coluna ou adicionar uma descrição para obter contexto adicional.
Requisitos de licença e de função
Tipo de requisito | Tem de ter |
---|---|
Licença | Dynamics 365 Sales Premium ou Dynamics 365 Sales Enterprise Mais informações: Preços do Dynamics 365 Sales |
Direitos de acesso | Administrador ou personalizador de sistema Mais informações: Direitos de acesso predefinidos para Sales |
Como personalizar o cabeçalho
Vamos compreender as personalizações com um exemplo. Vamos adicionar a tradução em francês para os nomes das colunas Previsão e Ganha na grelha de previsão.
-
Criar um componente de código com o nome
ColumnHeader
- Criar um ficheiro de recurso e adicionar traduções
- Implementar o manifesto
- Implementar a lógica do componente
- Criar e empacotar o componente
Criar um ficheiro de recurso e adicionar traduções
Depois de criar o componente de código, a pasta ColumnHeader
é criada no caminho especificado. Vamos criar um ficheiro de recurso e adicionar as traduções em francês no ficheiro de recurso.
Crie uma pasta denominada
strings
na pastaColumnHeader
.Copie o seguinte código para um novo ficheiro, ColumnHeader.1036.resx.
Nota
O número 1036 no nome de ficheiro é o código de idioma para francês. Para obter uma lista de códigos de idioma, consulte 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>
No exemplo de código anterior, os nomes de coluna para Previsão e Ganha são substituídos pelas traduções em francês Prévision e Gagné, respetivamente no nó
<data>
.Nota
No parâmetro
name
, especifique o nome de coluna exato que configurou no passo Esquema da previsão.Se pretende traduzir o nome de coluna para idiomas adicionais, crie um ficheiro de recurso para cada idioma que pretende traduzir. Certifique-se de que o nome do ficheiro de recurso utiliza a seguinte convenção de nomenclatura:
filename.languagecode.resx **Example file name for German:** ColumnHeader.1031.resx
Implementar o manifesto
Em seguida, vamos modificar o ficheiro de manifesto para especificar a propriedade que estamos a substituir. No nosso exemplo, estamos a substituir a propriedade ColumnName
. Especificaremos também o caminho para o ficheiro de recurso que contém o texto traduzido.
Abra o ficheiro do
ControlManifest.Input.XML
.Procure o nó
property
e substitua-o pelo seguinte código as-is:<property name="columnName" display-name-key="Property_Display_Key" description-key="Property_Desc_Key" of-type="SingleLine.Text" usage="bound" required="true" />
Atualize o nó
<resources>
para especificar o caminho para o ficheiro de recurso que inclui as traduções em 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 nó
<resx path>
contém o caminho do ficheiro de recurso. No exemplo do código anterior, adicionámos o ficheiro de recurso para o idioma francês. Se tiver traduções para outros idiomas, adicione também o caminho do ficheiro de recurso para esses idiomas.
Implementar a lógica do componente
Vamos adicionar o código para implementar a lógica de componente no ficheiro index.ts
.
Abra o ficheiro do
index.ts
.Adicione as seguintes linhas 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); }