Como utilizar a PriGrelha do SDK do ERP PRIMAVERA?
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: 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. 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: É na inicialização geral da PriGrelha que deverá indicar, também, outros atributos, tais como: 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): 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: Título A grelha deve ter um título. A instrução para definir o título é a seguinte: Permissões Existem algumas propriedades que indicam o que é permitido operar com a grelha. Outras propriedades da grelha 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: 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. Existem outros eventos da grelha, os mais importantes a ter em consideração são os seguintes: Poderá encontrar aqui um exemplo completo de como usar a PriGrelha em modo de edição.SELECT TipoEntidade, Entidade, Modulo, Filial, TipoDoc, Serie, NumDocInt, DataDoc, ValorTotal, ValorPendente
FROM Pendentes
ORDER BY TipoEntidade, Entidade, DataDoc
Utilizar a PriGrelha
private void frmDemoGrid_Load(object sender, EventArgs e)
{
// Initialize the SDK context
PriSDKContext.Initialize(BSO, PSO);
// Initialize SDK controls
InitializeSDKControls();
// Initialize the grid
InitializeGrid();
}
ColKey Chave única da coluna Tipo Tipo de coluna que terá que corresponder ao tipo de campo (ex: Integer, Float, Edit, etc.) Título Texto que será apresentado no header da coluna Largura Tamanho da coluna Visível Indica se é uma coluna visível ou escondida CamposBaseDados Campo da base de dados que será usada para obter os resultados, pode ser um valor calculado, ex: ValorPago = ValorTotal - ValorPendente DrillDown Indica se a coluna será formatada para drill-down priGrelha1.AddColAgrupa();
priGrelha1.BandaMenuContexto = "PopupGrelhasStd";
priGrelha1.TituloGrelha = "Demo Grid 1";
PermiteAgrupamentosUser Indica se o utilizador pode manipular os agrupamentos, criar, alterar e remover PermiteOrdenacao Indica se o utilizador pode efetuar ordenações na grelha PermiteActualizar Indica se estará disponível a opção para atualização dos dados da grelha PermiteFiltros Indica se estarão disponíveis os filtros aos dados da grelha PermiteDetalhes Indica se permite visualizar a grelha lateral de detalhes PermiteStatusBar Indica se a barra de estados é apresentada PermiteDataFill Indica se o evento DataFill é executado (explicado mais à frente neste artigo) PermiteVistas Indica se são permitidas vistas sobre os dados da grelha Propriedade Tipo Descrição BandaMenuContexto string Retorna/define a banda de menu com opções do utilizador. BotaoConfigurarActiveBar bool Retorna/define quando o botão de configuração de colunas está disponível na barra de menus interna. CaminhoTemplateImpressao string Interno. Ficheiro com o modelo de impressão. ColsFrozen int Número de colunas não editáveis. NumeroMaxRegistosSemPag int Número máximo de registos permitidos sem paginação (a grelha necessita de Permitir Paginação). NumeroRegistos int Retorna o número de registos da grelha. NumLinhasCabecalho int Retorna/define o número de linhas de cabeçalho. OrientacaoMapa enum Retorna/define a orientação da impressão da grelha. ParentFormModal bool Retorna/define a forma como as opções de contexto são apresentadas. PermiteActiveBar bool Retorna/define se é apresentada a barra de menus interna da grelha. PermiteConfigurarDetalhes bool Permite obter se a grelha de detalhes é configurável. PermiteContextoVazia bool Permite definir se a grelha permite Right-Click quando está vazia. PermiteEdicao bool Retorna/define se a grelha permite a edição das colunas. PermiteGrafico bool Retorna/define se a opção de gráficos está disponível. PermiteGrandeTotal bool Retorna/define se os totalizadores são apresentados. PermitePaginacao bool Permite ativar a paginação da grelha em cenários de grande volume de informação. PermiteScrollBars bool Retorna/define se a grelha adiciona Scroll Bars. PosicionaColunaSeguinte bool Posiciona o cursor na coluna seguinte. TituloGrelha string Retorna/define o título da grelha. TituloMapa string Retorna/define o título do mapa. TypeNameLinha string Permite definir o nome do objeto da linha para o MostraBEO e PreencheBEO. TypeNameLinhas string Permite definir o nome do objeto das linhas para o MostraBEO e PreencheBEO. 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"
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
priGrelha1_ActualizaDados Evento despoletado pela grelha ao carregar no atualizar priGrelha1_FormatacaoAlterada Evento despoletado pela grelha depois de fazer alterações na configuração priGrelha1_MenuContextoSeleccionado Evento despoletado pela grelha ao click de uma opção do menu de contexto
login para deixar a sua opinião.