L’exemple donné ici permet d’afficher le champ stock.s_cle1 dans la grille de tarification des clients.
Ce champ est ajouté à la requête de sélection des tarifs du client via l’évènement StringUpdate. Ensuite, grâce à l’évènement AfterColumnsCreated, on fixera la propriété ReadOnly de la DataColumn de ce champ à "true" pour empêcher Mercator de mettre à jour cette valeur.
Mercator ne met pas à jour les colonnes dont la DataColumn est en ReadOnly.
Ce système est disponible dans toutes les grilles enfant des signalétiques.
Le code s’établit comme suit :
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using MercatorUi;
using MercatorApi;
using System.Data;
using System.Data.SqlClient;
namespace SigCli
{
public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer,
MercatorUi.ICustomizers.IStringUpdater
{
string MercatorUi.ICustomizers.IStringUpdater.StringUpdate(string StringToModify)
{
string id = Api.StrExtract(StringToModify, "/*<ID>", "</ID>*/");
if (id == "TARCLI")
{
StringToModify = StringToModify.Replace(" as s_modele", " as s_modele, stock.s_cle1");
StringToModify = StringToModify.Replace("tarcli (NOLOCK) where", "tarcli (NOLOCK) left join stock on tarcli.ar_ref = stock.s_id where");
}
return StringToModify;
}
public void FormLoadCustomize(Form form)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
List<Control> l = sigForm.FindMovableControlsByType(typeof(MercatorUi.Forms.Sig.SigGrids.TarCli));
if (l.Count > 0)
{
MercatorUi.Forms.Sig.SigGrids.TarCli CliTarCli = (MercatorUi.Forms.Sig.SigGrids.TarCli)l[0];
CliTarCli.AfterColumnsCreated += new MercatorUi.MovableControls.MovableGrid.AfterColumnsCreatedHandler(CliTarCli_AfterColumnsCreated);
}
}
public void FormClosedCustomize(Form form)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
List<Control> l = sigForm.FindMovableControlsByType(typeof(MercatorUi.Forms.Sig.SigGrids.TarCli));
if (l.Count > 0)
{
MercatorUi.Forms.Sig.SigGrids.TarCli CliTarCli = (MercatorUi.Forms.Sig.SigGrids.TarCli)l[0];
CliTarCli.AfterColumnsCreated -= new MercatorUi.MovableControls.MovableGrid.AfterColumnsCreatedHandler(CliTarCli_AfterColumnsCreated);
}
}
void CliTarCli_AfterColumnsCreated(object sender, EventArgs e)
{
MercatorUi.Forms.Sig.SigGrids.TarCli CliTarCli = (MercatorUi.Forms.Sig.SigGrids.TarCli)sender;
// Adaptation de l'intitulé
CliTarCli.Grid.Columns["S_CLE1"].HeaderText = "Code";
// Ne pas permettre la modification de la colonne
CliTarCli.Grid.Columns["S_CLE1"].ReadOnly = true;
DataTable dt = (DataTable)CliTarCli.Grid.DataSource;
dt.Columns["S_CLE1"].ReadOnly = true;
// Positionnement de la colonne
CliTarCli.Grid.Columns["S_CLE1"].DisplayIndex = 2;
}
}
}