Le code montré ci-dessus permet de modifier les valeurs affichées dans les déroulants du reporting, comme par exemple, celles-ci :
Ce customizer Main implémente l'interface IReportingComboDataTableUpdater qui requiert la méthode ReportingComboDataTableUpdate recevant ces paramètres :
- un tableau de dataRows correspondant aux enregistrements de la table DOCUM pour le ou les documents sélectionnés. Ceci permet d'identifier le ou les rapports en cours d'exécution.
- le paramètre SQL qui va être traité.
- la dataTable correspondant à ce paramètre SQL, qui peut donc être modifiée ici.
Ce code exige une version de Mercator 10.10 ou ultérieure.
Dans l'exemple ci-dessous, une ligne correspondant à un dépôt est simplement retirée.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using MercatorDatabase;
namespace Main
{
public class Customizer : MercatorUi.ICustomizers.IReportingComboDataTableUpdater
{
public void ReportingComboDataTableUpdate(DataRow[] documRows, string paramName, DataTable dataTable)
{
if (paramName.Equals("@depot_id1", StringComparison.InvariantCultureIgnoreCase) || paramName.Equals("@depot_id2", StringComparison.InvariantCultureIgnoreCase))
{
DataRow drToRemove = dataTable.RowsEnumerable().FirstOrDefault(dr => dr["nom"].ToString().Contains("Steinfort"));
if (drToRemove != null)
dataTable.Rows.Remove(drToRemove);
}
}
}
}
Note : après modification de ce customizer, il faut redémarrer Mercator.