Cocher par défaut une case dans la grille des articles liés

0000003188     -      26/10/2023

Le code proposé ici montre comment cocher par défaut une case la grille des articles liés, après sélection d'un article. Dans cette grille, les noms des colonnes "cases à cocher" sont "PR", "VEN", "ACH", "PROD", "VEN2", "ACH2", "PROD2", "VEN3", "ACH3", "PROD3". L'exemple est donné pour la colonne A, donc "ACH".

Cette programmation est réalisée sur base d'un customizer SigStock qui implémente les interfaces suivantes :

Il exploite l'événement AfterSelectNewSigRecord de ArtLiens qui permet d'exécuter un code sur mesure après la sélection d'un article dans la grille.

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

namespace SigStock
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
    {

        public void FormLoadCustomize(System.Windows.Forms.Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            MercatorUi.Forms.Sig.SigGrids.ArtLiens artliens = sigForm.MovableControls.Values.OfType<MercatorUi.Forms.Sig.SigGrids.ArtLiens>().FirstOrDefault();
            if (artliens != null)
                artliens.AfterSelectNewSigRecord += GridArtliens_AfterSelectNewSigRecord;
        }

        public void FormClosedCustomize(System.Windows.Forms.Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            MercatorUi.Forms.Sig.SigGrids.ArtLiens artliens = sigForm.MovableControls.Values.OfType<MercatorUi.Forms.Sig.SigGrids.ArtLiens>().FirstOrDefault();
            if (artliens != null)
                artliens.AfterSelectNewSigRecord -= GridArtliens_AfterSelectNewSigRecord;
        }

        private void GridArtliens_AfterSelectNewSigRecord(object sender, MercatorUi.MovableControls.MovableGrid.AfterSelectNewSigRecordEventArgs e)
        {
            MercatorUi.Forms.Sig.SigGrids.ArtLiens artliens = (MercatorUi.Forms.Sig.SigGrids.ArtLiens)sender;
            artliens.Grid.Rows[e.RowIndex].Cells["ACH"].Value = true;
        }
    }
}