¿Cómo utilizar PriGrelha desde el SDK del ERP Cegid?
El SDK es una librería de patrones y controles de negocio para el entorno Cegid. Esto permite a los socios y a los equipos de desarrollo externos crear complementos para el ERP de forma más rápida y sencilla. Este artículo pretende describir cómo podemos utilizar uno de estos controles, la PriGrelha, y su proceso de inicialización y carga en un contexto de consulta a una base de datos (por ejemplo, listar un extracto de cuenta corriente). Consulta a ejecutar: Paso 1 - Inicializar el SDK Para utilizar cualquier control del SDK, es necesario inicializarlo (véase el artículo "¿Cómo utilizar los controles SDK del ERP Cegid?." Paso 2 - Inicialización con el contexto SDK Una vez lanzado el control PriGrelha en el formulario, hay que inicializarlo con el contexto del SDK. Esta inicialización debe tener lugar antes de realizar cualquier operación sobre el control PriGrelha. Paso 3 - Formatación Para que el control muestre los resultados, hay que formatar las respectivas columnas, indicando para cada una el campo correspondiente que se mostrará. Estas columnas deben estar de acuerdo con la consulta ejecutada. El método a utilizar para esta formatación es AddColKey de PriGrelha, y los argumentos principales son los siguientes: En la inicialización general de PriGrelha debe indicar también otros atributos, como: Agrupamentos Debe indicar si la grid tendrá agrupaciones y cuántas se permiten. Para ello, debe ejecutar la siguiente línea de comando el mismo número de veces que agrupaciones desee para la grid (hasta un máximo de cuatro agrupaciones): Menu de contexto Por defecto, el menú de contexto que aparecerá será el menú estándar con el nombre "PopupGrelhasStd". Si quiere añadir nuevas opciones al menú, tiene que crear un menú específico. La instrucción para configurar el menú de contexto es la siguiente: Título La grid debe tener un título. La instrucción para definir el título es la siguiente: Permissões Hay una serie de propiedades que indican lo que está permitido operar con la grid. Otras propiedades de la grid Paso 4 - Carga de la PriGrelha Este artículo describe la forma más sencilla y fácil de utilizar PriGrelha en un contexto de consulta a una base de datos, mediante una consulta SQL ejecutada por DataBind. Como se ha indicado anteriormente, los campos SELECT utilizados para obtener los registros para la grid deben coincidir con las columnas creadas. La mejor forma de garantizar esto es utilizar un método en la propia grid que devuelva todos los campos, según lo creado en el método de inicialización, ya formateados correctamente para añadirlos al SELECT. Ejemplo de cómo hacer DataBind a partir de una consulta a una base de datos: Si la propiedad "PermiteDataFill" está activada, se ejecutará el evento DataFill. En este evento puede manipular todos los datos que se cargan en la grid, línea a línea. Existen otros eventos en la grid, los más importantes a tener en cuenta son los siguientes: Podrá encontrar aquí un ejemplo completo de cómo utilizar la PriGrelha en modo edición.SELECT TipoEntidade, Entidade, Modulo, Filial, TipoDoc, Serie, NumDocInt, DataDoc, ValorTotal, ValorPendente
FROM Pendentes
ORDER BY TipoEntidade, Entidade, DataDoc
Utilizar la 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 Clave única de la columna Tipo Tipo de columna que debe corresponder al tipo de campo (ej.: Integer, Float, Edit, etc.) Título Texto que se mostrará en el header de la columna Largura Tamaño de la columna Visível Indica si es una columna visible u oculta CamposBaseDados Campo de la base de datos que se utilizará para obtener los resultados, puede ser un valor calculado, ej.: ValorPago = ValorTotal - ValorPendente DrillDown Indica si la columna se formateará para drilldown priGrelha1.AddColAgrupa();
priGrelha1.BandaMenuContexto = "PopupGrelhasStd";
priGrelha1.TituloGrelha = "Demo Grid 1";
PermiteAgrupamentosUser Indica si el usuario puede manipular las agrupaciones, crearlas, modificarlas y eliminarlas. PermiteOrdenacao Indica si el usuario puede ordenar la grid PermiteActualizar Indica si estará disponible la opción de actualizar los datos de la grid PermiteFiltros Indica si los filtros estarán disponibles para los datos de la grid PermiteDetalhes Indica si permite visualizar la grid lateral de detalles PermiteStatusBar Indica si se muestra la barra de estado PermiteDataFill Indica si se ejecuta el evento DataFill (explicado más adelante en este artículo) PermiteVistas Indica si se permiten las vistas de los datos de la grid Propiedad Tipo Descripción BandaMenuContexto string Devuelve/define la banda del menú con las opciones del usuario. BotaoConfigurarActiveBar bool Devuelve/define cuándo está disponible el botón de configuración de columnas en la barra de menús interna. CaminhoTemplateImpressao string Interno. Archivo con el modelo de impresión. ColsFrozen int Número de columnas no editables. NumeroMaxRegistosSemPag int Número máximo de registros permitidos sin paginación (la grid necesita Permitir paginación). NumeroRegistos int Devuelve el número de registros de la grid. NumLinhasCabecalho int Devuelve/define el número de líneas de cabecera. OrientacaoMapa enum Devuelve/define la orientación de impresión de la grid. ParentFormModal bool Devuelve/define cómo se muestran las opciones de contexto. PermiteActiveBar bool Devuelve/define si se muestra la barra de menú interna de la grid. PermiteConfigurarDetalhes bool Permite comprobar si la grid de detalles es configurable. PermiteContextoVazia bool Permite definir si la grid permite hacer clic con el botón derecho cuando está vacía. PermiteEdicao bool Devuelve/define si la grid permite editar las columnas. PermiteGrafico bool Devuelve/define si la opción de gráficos está disponible. PermiteGrandeTotal bool Devuelve/define si se muestran los totalizadores. PermitePaginacao bool Permite activar la paginación de la grid en escenarios con un gran volumen de información. PermiteScrollBars bool Devuelve/define si la grid añade scroll bars. PosicionaColunaSeguinte bool Sitúa el cursor en la siguiente columna. TituloGrelha string Devuelve/define el título de la grid. TituloMapa string Devuelve/define el título del mapa. TypeNameLinha string Puede definir el nombre del objeto de la línea para MostraBEO y PreencheBEO. TypeNameLinhas string Puede definir el nombre del objeto de las líneas para MostraBEO y 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 desencadenado por la grid cuando se pulsa actualizar PriGrelha1_FormatacaoAlterada Evento desencadenado por la grid tras realizar cambios en la configuración PriGrelha1_MenuContextoSeleccionado Evento desencadenado por la grid cuando pulsa sobre una opción del menú de contexto