V10 RecursosReferência
RecursosReferência
Referência
Voltar | Lista de artigos

Como utilizar a PriGrelha do SDK do ERP PRIMAVERA?

Última alteração a 28/09/2021

O SDK é uma biblioteca de padrões e controlos de negócio para o ambiente PRIMAVERA. Este permite aos parceiros e às equipas de desenvolvimento externas criar add-ons para o ERP de uma forma mais rápida e simples.

Este artigo pretende descrever como podemos usar um destes controlos, a PriGrelha, assim como o seu processo de inicialização e carregamento num contexto de consulta à base de dados (por exemplo, a listagem de um extrato de contas correntes).

Query a executar:

SELECT		TipoEntidade, Entidade, Modulo, Filial, TipoDoc, Serie, NumDocInt, DataDoc, ValorTotal, ValorPendente
FROM		Pendentes
ORDER BY	TipoEntidade, Entidade, DataDoc

Utilizar a PriGrelha

Passo 1 - Inicialização do SDK

Para usar qualquer controlo do SDK, é necessário que este seja inicializado (ver artigo "Como utilizar os controlos SDK do ERP PRIMAVERA?."

Passo 2 - Inicialização com o contexto do SDK

Após o controlo da PriGrelha ser lançado no formulário, é necessário que este seja inicializado com o contexto do SDK. Esta inicialização deve acontecer antes de efetuar qualquer operação sobre a grelha.

private void frmDemoGrid_Load(object sender, EventArgs e)
{
	// Initialize the SDK context
	PriSDKContext.Initialize(BSO, PSO);

	// Initialize SDK controls
	InitializeSDKControls();

	// Initialize the grid
	InitializeGrid();
}

Passo 3 - Formatação

Para a grelha mostrar resultados é necessário formatar as respetivas colunas, indicando para cada uma, o campo correspondente que será apresentado. Estas colunas terão de estar de acordo com a query executada.

O método a usar para esta formatação é o AddColKey da PriGrelha, sendo que os principais argumentos são os seguintes:

ColKeyChave única da coluna
TipoTipo de coluna que terá que corresponder ao tipo de campo (ex: Integer, Float, Edit, etc.)
TítuloTexto que será apresentado no header da coluna
LarguraTamanho da coluna
VisívelIndica se é uma coluna visível ou escondida
CamposBaseDadosCampo da base de dados que será usada para obter os resultados, pode ser um valor calculado, ex: ValorPago = ValorTotal - ValorPendente
DrillDownIndica se a coluna será formatada para drill-down

É na inicialização geral da PriGrelha que deverá indicar, também, outros atributos, tais como:

  • Agrupamentos
  • Menu de contexto
  • Título
  • Permissões

Agrupamentos

É necessário indicar se a grelha terá agrupamentos e quantos são permitidos. Para tal, deve executar a seguinte linha de comando o mesmo número de vezes que os agrupamentos que pretende para a grelha (até um máximo de quatro agrupamentos):

priGrelha1.AddColAgrupa();

Menu de contexto

Por omissão, o menu de contexto a aparecer será o menu standard com o nome "PopupGrelhasStd". Caso se pretenda adicionar novas opções ao menu, é necessário criar um menu específico. A instrução para definir o menu de contexto é a seguinte:

priGrelha1.BandaMenuContexto = "PopupGrelhasStd";

Título

A grelha deve ter um título. A instrução para definir o título é a seguinte:

priGrelha1.TituloGrelha = "Demo Grid 1";

Permissões

Existem algumas propriedades que indicam o que é permitido operar com a grelha.

PermiteAgrupamentosUserIndica se o utilizador pode manipular os agrupamentos, criar, alterar e remover
PermiteOrdenacaoIndica se o utilizador pode efetuar ordenações na grelha
PermiteActualizarIndica se estará disponível a opção para atualização dos dados da grelha
PermiteFiltrosIndica se estarão disponíveis os filtros aos dados da grelha
PermiteDetalhesIndica se permite visualizar a grelha lateral de detalhes
PermiteStatusBarIndica se a barra de estados é apresentada
PermiteDataFillIndica se o evento DataFill é executado (explicado mais à frente neste artigo)
PermiteVistasIndica se são permitidas vistas sobre os dados da grelha

Outras propriedades da grelha

PropriedadeTipoDescrição
BandaMenuContextostringRetorna/define a banda de menu com opções do utilizador.
BotaoConfigurarActiveBarboolRetorna/define quando o botão de configuração de colunas está disponível na barra de menus interna.
CaminhoTemplateImpressaostringInterno. Ficheiro com o modelo de impressão.
ColsFrozenintNúmero de colunas não editáveis.
NumeroMaxRegistosSemPagintNúmero máximo de registos permitidos sem paginação (a grelha necessita de Permitir Paginação).
NumeroRegistosintRetorna o número de registos da grelha.
NumLinhasCabecalhointRetorna/define o número de linhas de cabeçalho.
OrientacaoMapaenumRetorna/define a orientação da impressão da grelha.
ParentFormModalboolRetorna/define a forma como as opções de contexto são apresentadas.
PermiteActiveBarboolRetorna/define se é apresentada a barra de menus interna da grelha.
PermiteConfigurarDetalhesboolPermite obter se a grelha de detalhes é configurável.
PermiteContextoVaziaboolPermite definir se a grelha permite Right-Click quando está vazia.
PermiteEdicaoboolRetorna/define se a grelha permite a edição das colunas.
PermiteGraficoboolRetorna/define se a opção de gráficos está disponível.
PermiteGrandeTotalboolRetorna/define se os totalizadores são apresentados.
PermitePaginacaoboolPermite ativar a paginação da grelha em cenários de grande volume de informação.
PermiteScrollBarsboolRetorna/define se a grelha adiciona Scroll Bars.
PosicionaColunaSeguinteboolPosiciona o cursor na coluna seguinte.
TituloGrelhastringRetorna/define o título da grelha.
TituloMapastringRetorna/define o título do mapa.
TypeNameLinhastringPermite definir o nome do objeto da linha para o MostraBEO e PreencheBEO.
TypeNameLinhasstringPermite definir o nome do objeto das linhas para o MostraBEO e PreencheBEO.

Passo 4 - Carregamento da PriGrelha

Este artigo descreve a forma mais simples e fácil de usar uma PriGrelha num contexto de consulta à base de dados, através de uma query SQL executada por DataBind.

Tal como indicado anteriormente, os campos do SELECT que é feito para obter os registos para a grelha têm de estar de acordo com as colunas criadas.

A melhor forma de garantir isto é usando um método da própria grelha que devolva todos os campos, de acordo com o que foi criado no método de inicialização, já corretamente formatado para se adicionar ao SELECT.

Exemplo de como efetuar o DataBind a partir de uma consulta à base de dados:

private void LoadGrid()
{
	StdBELista lista;

	StringBuilder query = new StringBuilder();
	query.AppendLine(string.Format("SELECT {0}", priGrelha1.DaCamposBDSelect()));
	query.AppendLine("FROM Pendentes");
	query.AppendLine(string.Format("WHERE TipoEntidade = '{0}'", tiposEntidade1.TipoEntidade));

	if (!string.IsNullOrWhiteSpace(f41.Text))
	{
		query.AppendLine(string.Format("AND Entidade = '{0}'", f41.Text));
	}

	query.AppendLine("ORDER BY DataDoc");

	lista = new StdBELista();
	lista = PriSDKContext.SdkContext.BSO.Consulta(query.ToString());

	priGrelha1.DataBind(lista);
}

Evento "DataFill"

Se a propriedade "PermiteDataFill" estiver ativada, o evento DataFill será executado. Neste evento pode-se manipular todos os dados que estão a ser carregados para a grelha, linha a linha.

private void priGrelha1_DataFill(object Sender, PriGrelha.DataFillEventArgs e)
{
	// Set modulo description
	string modulo = PSO.Utils.FStr(priGrelha1.GetGRID_GetValorCelula(e.Row, colModulo));
	string moduloDesc = modulo;

	switch (modulo)
	{
		case "V":
			moduloDesc = "Vendas";
			break;
		case "C":
			moduloDesc = "Compras";
			break;
		case "M":
			moduloDesc = "C/Corentes";
			break;
		default:
			break;
	}

	priGrelha1.SetGRID_SetValorCelula(e.Row, colModuloDesc, moduloDesc);

	// Set days of delay
	int daysOfDelay = PSO.Utils.FInt(priGrelha1.GetGRID_GetValorCelula(e.Row, colDiasAtraso));
	daysOfDelay = daysOfDelay < 0 ? Math.Abs(daysOfDelay) : 0;
	priGrelha1.SetGRID_SetValorCelula(e.Row, colDiasAtraso, daysOfDelay);
}

Outros eventos

Existem outros eventos da grelha, os mais importantes a ter em consideração são os seguintes:

priGrelha1_ActualizaDadosEvento despoletado pela grelha ao carregar no atualizar
priGrelha1_FormatacaoAlteradaEvento despoletado pela grelha depois de fazer alterações na configuração
priGrelha1_MenuContextoSeleccionadoEvento despoletado pela grelha ao click de uma opção do menu de contexto

Poderá encontrar aqui um exemplo completo de como usar a PriGrelha em modo de edição.

Adicionar aos favoritos ou partilhar este artigo
Esta página foi útil?
Obrigado pelo seu voto.
Artigos Relacionados
Características das entidades e serviços Conceito de integração Conceito de extensibilidade Como registar projetos de extensibilidade? Boas práticas de organização de projetos de integração
Últimos Artigos Vistos
Boas práticas de organização de projetos de integração