Ajouter une colonne S_CLE1 dans l’objet TarCli

0000002138     -      15/01/2025

 Depuis la version 11.0, ce code est obsolète. Il est possible de réaliser ce paramétrage sans code. La requête peut être modifiée via la propriété StringUpdater de la grille TarCli. Les règles de colonnes sont aussi disponibles.


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 des signalétiques.

Le code s’établit comme suit :

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using MercatorUi;
using MercatorApi;
using System.Data;
using System.Linq;

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")
                                               .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;
            MercatorUi.Forms.Sig.SigGrids.TarCli tarCli = sigForm.MovableControls.Values.OfType<MercatorUi.Forms.Sig.SigGrids.TarCli>().FirstOrDefault();
            if (tarCli != null)
                tarCli.AfterColumnsCreated += TarCli_AfterColumnsCreated;
        }

        public void FormClosedCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            MercatorUi.Forms.Sig.SigGrids.TarCli tarCli = sigForm.MovableControls.Values.OfType<MercatorUi.Forms.Sig.SigGrids.TarCli>().FirstOrDefault();
            if (tarCli != null)
                tarCli.AfterColumnsCreated -= TarCli_AfterColumnsCreated;
        }

        void TarCli_AfterColumnsCreated(object sender, EventArgs e)
        {
            MercatorUi.Forms.Sig.SigGrids.TarCli tarCli = (MercatorUi.Forms.Sig.SigGrids.TarCli)sender;
            tarCli.Grid.Columns["S_CLE1"].HeaderText = "Code";
            tarCli.Grid.Columns["S_CLE1"].ReadOnly = true;
            tarCli.Grid.Columns["S_CLE1"].DisplayIndex = 2;
            DataTable dt = (DataTable)tarCli.Grid.DataSource;
            dt.Columns["S_CLE1"].ReadOnly = true;
        }
    }
}


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)