RapidGrid - grille low code

0000003274     -      16/01/2025

Mercator 11.0 ou ultérieur contient la classe MercatorUi._BaseClasses.RapidGrid. Il s'agit d'une contrôle utilisateur contenant une grille. Cette grille peut être définie avec peu de code (low code).

Cet objet doit voir sa propriété ReqSql définie avec un requête SQL. Le résultat de cette requête SQL va définir les colonnes, leur ordre et leur type. Par exemple, une colonne de données de type boolean affichera automatiquement une case à cocher, une colonne de données de type float affichera automatiquement une colonne numérique, ...

Si des paramètres doivent être passés à cette requête SQL, il faut populer la propriété SqlParameters qui est un tableau de MercatorApi.MercatorSqlParam. Si aucun paramètre n'est nécessaire, cette propriété peut rester à null.

Une fois ceci effectué, il suffit d'appeler par code la méthode BuildAsync. La grille se complète immédiatement avec les colonnes adéquates et les données souhaitées.

Le résultat peut être peaufiné via des règles de colonnes. Ces règles doivent être placées dans la propriété ColumnRules qui est un tableau de MovableControls.Tools.ColumnRule. Toutes les propriétés habituellement fixées dans l'interface de Mercator sont ici disponibles de façon programmatique.

Ce concept est utilisé dans le widget 10 dernières ventes. Les sources du projet sont disponibles.


Exemples de code

Afin d'alléger la notation, ce using est doit être placé :

Zoom
using MercatorUi.MovableControls.Tools;

 

Notation en C# 12 (à activer via <LangVersion>12.0</LangVersion> dans un PropertyGroup du projet au format SDK)

Zoom
rapidGrid.ReqSql = "select ...";
rapidGrid.SqlParameters = [new MercatorSqlParam("@type", 1)];
rapidGrid.ColumnRules =
[
    new ColumnRule{ Name = "journal", HeaderText = "Journal", Width = 75, Rupture = ColumnRule.RupturableBehavior.RuptureOnDemand },
    new ColumnRule{ Name = "date", Width = 70, Format = "dd/MM/yyyy" },
    new ColumnRule{ Name = "n_dec", Hidden = true },
];
rapidGrid.BuildAsync();

 

Notation en C# version antérieure à 12

Zoom
rapidGrid.ReqSql = "select ...";
rapidGrid.SqlParameters = new MercatorSqlParam[] { new MercatorSqlParam("@type", 1) };
rapidGrid.ColumnRules = new ColumnRule[]
{
    new ColumnRule{ Name = "journal", HeaderText = "Journal", Width = 75, Rupture = ColumnRule.RupturableBehavior.RuptureOnDemand },
    new ColumnRule{ Name = "date", Width = 70, Format = "dd/MM/yyyy" },
    new ColumnRule{ Name = "n_dec", Hidden = true },
};
rapidGrid.BuildAsync();

 

Si on souhaite automatiser le rafraichissement de la RapidGrid, il suffit de compléter sa propriété AutoRefreshInterval.

Zoom
rapidGrid.AutoRefreshInterval = TimeSpan.FromMinutes(1);

 

Ce composant est compatible avec les boutons de zoomSi on utilise une UserDefinedButtonColumnCustom, il faut définir où se trouve la méthode que ce bouton devra appeler. De façon simple, cette méthode pourra être placée dans le code définissant la RapidGrid. Dans ce cas, il faut compléter la propriété CustomMethodsOwner comme suit :

Zoom
rapidGrid.CustomMethodsOwner = this;

 

La RapidGrid contient aussi ces propriétés :

  • Grid : la DataGridViewXPro (grille) en tant que telle. Il est possible, via cette propriété d'inscrire des événements sur la grille (CellFormatting, ...) ou d'agir sur d'autres fonctionnalités de la grille.
  • LabelError : un label qui affiche une éventuelle erreur SQL lors de l'exécution de la requête.

La méthode BuildAsync est asynchrone. Cela signifie que la requête SQL n'est pas exécutée immédiatement lors de l'instanciation de la RapidGrid. Ce comportement est particulièrement adapté pour une utilisation dans les widgets. En effet, l'exécution de cette requête ne retardera pas la finalisation du login de l'utilisateur qui s'achève par l'instanciation des widgets.

Cette méthode ne doit être appelée qu'une seule fois.

Si on souhaite rafraîchir par code le contenu de la RapidGrid, il faut appeler la méthode RefreshContent. Elle est aussi asynchrone. il est possible de modifier la valeur de certains paramètres SQL avant d'appeler cette méthode : 

Zoom
rapidGrid.SqlParameters.First(p => p.ParameterName == "@type").Value = 2;

La RapidGrid dispose de l'événement GridPopulated qui est levé chaque fois que la grille reçoit des données.

  • Après la première exécution de la requête SQL via la méthode BuildAsync
  • Après chaque exécution de la méthode RefreshContent.

Si une erreur SQL est rencontrée, cet événement n'est pas levé. 



Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)