In het object TarCli een kolom S_CLE1 toevoegen

0000002138     -      26-02-2018

Met het voorbeeld dat hier gegeven wordt kan het veld stock.s_cle1 worden weergegeven in de prijsrooster van de klanten.

Dit veld wordt toegevoegd aan de selectie-opdracht van de prijzen van de klant via het event StringUpdate. Dankzij het event AfterColumnsCreated, wordt vervolgens de ReadOnly-eigenschap van de DataColumn op 'true' geplaatst om te voorkomen dat Mercator deze waarde bijwerkt.

attention Mercator werkt de kolommen niet bij waarvan de DataColumn in ReadOnly staat.
Dit systeem is beschikbaar in alle enfants-roosters in de informatiebestanden.

De code wordt als volgt samengesteld:

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