De code onderaan laat ons zien hoe men kan bepalen welke waarden worden weergegeven in een vervolgkeuzelijst in de rapportage (zoals deze):
De Main customizer implementeert de interface IReportingComboDataTableUpdater die methode ReportingComboDataTableUpdate oproept dat volgende parameters ontvangt:
- een tabel van dataRows die overeenkomen met de records uit de DOCUM tabel voor de geselecteerde documenten. Dit identificeert de rapport(en) die uitgevoerd worden.
- de SQL parameter die zal uitgevoerd worden.
- de dataTable die overeenkomt met de SQL parameter, die op deze manier kan gewijzigd worden.
Deze code vereist Mercator versie 10.10 of later.
In dit voorbeeld wordt een magazijn lijn verwijderd.
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);
}
}
}
}
Opmerking: na het aanpassen van de customizer moet men Mercator herstarten.