Personalizar os cabeçalhos das colunas na grade de previsão
Você pode personalizar os cabeçalhos das colunas na grade de previsão usando os componentes de código do Power Apps. Por exemplo, você pode traduzir o nome da coluna ou adicionar uma dica de ferramenta para contexto adicional.
Requisitos de licença e função
Tipo de requisito | Você deve 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 do sistema Mais informações: Direitos de acesso predefinidos para o Sales |
Como personalizar o cabeçalho
Vamos entender as personalizações com um exemplo. Adicionaremos a tradução em francês para os nomes das colunas Forecast e Won na grade de previsão.
-
Crie um componente de código com o nome
ColumnHeader
- Criar um arquivo de recurso e adicionar as traduções
- Implementar o manifesto
- Implementar a lógica do componente
- Criar e empacotar o componente
Criar um arquivo de recurso e adicionar as traduções
Depois de criar o componente de código, a pasta ColumnHeader
é criada no caminho que você especificou. Vamos criar um arquivo de recurso e adicionar as traduções em francês no arquivo de recurso.
Crie uma pasta chamada
strings
na pastaColumnHeader
.Copie o seguinte código para um novo arquivo, ColumnHeader.1036.resx.
Nota
O número 1036 no nome do arquivo é o código do idioma francês. Para obter uma lista com os códigos dos idiomas, 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 acima, os nomes das colunas para Forecast e Won são substituídos pelas traduções em francês Prévision e Gagné respectivamente no nó
<data>
.Nota
No parâmetro
name
, especifique o nome exato da coluna que você configurou na etapa Layout da previsão.Se quiser traduzir o nome da coluna para outros idiomas, crie um arquivo de recurso para cada idioma para o qual deseja traduzir. Certifique-se de que o nome do arquivo de recurso use a seguinte convenção de nomenclatura:
filename.languagecode.resx **Example file name for German:** ColumnHeader.1031.resx
Implementar o manifesto
Em seguida, modificaremos o arquivo de manifesto para especificar a propriedade que estamos substituindo. Em nosso exemplo, estamos substituindo a propriedade ColumnName
. Também especificaremos o caminho para o arquivo de recurso que contém o texto traduzido.
Abra o arquivo
ControlManifest.Input.XML
.Pesquise o nó
property
e substitua-o pelo código a seguir como está:<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 arquivo 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 arquivo de recurso. No exemplo de código anterior, adicionamos o arquivo de recurso para o idioma francês. Se você tiver traduções para outros idiomas, adicione também o caminho do arquivo de recurso desses idiomas.
Implementar a lógica do componente
Vamos adicionar o código para implementar a lógica do componente no arquivo index.ts
.
Abra o arquivo
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); }