Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Ajouter une colonne S_CLE1 dans l’objet TarCli

0000002138     -      26/02/2018

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.

attention 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 :

Zoom
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;
        }
    }
}