Combos interdépendants dans un signalétique

0000002324     -      11/10/2023

Ceci peut se faire assez simplement puisque Mercator dispose de cette fonctionnalité pour lui même (pour les rayons / familles / sous-familles, pour les gammes). 

Il faut ajouter ces champs dans la table STOCK : 

alter table STOCK add
S_ID_RAY2 char(10) not null default '',
S_ID_FAM2 char(10) not null default ''

Il faut ajouter un combo en mode paramétrage associé à ces deux champs et respectivement avec ces 2 requêtes SQL :

  • select nom,id from rayons order by nom
  • select nom,id from familles where id_rayon=@id order by nom

Il faut alimenter la propriété ParentField du combo associé à S_ID_FAM2 avec la valeur S_ID_RAY2 pour lier les 2 combos. La SelectedValue du combo rayon sera passée en tant que @id à la requête SQL. Ce changement de propriété se fait par ce simple customizer :

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

namespace SigStock
{
    public class Customizer : MercatorUi.ICustomizers.IComboListPreCustomizer
    {

        public void ComboListPreCustomize(MercatorUi.MovableControls.Interfaces.IMovableComboBoxOrTree combo)
        {
            if (combo.Source == "S_ID_FAM2")
                combo.ParentField = "S_ID_RAY2";
        }
    }
}

Il ne faut rien faire d'autre. Mercator se charge du reste.

Depuis la version 10.6.106 de MercatorUi.dll, ceci est possible dans tous les écrans personnalisables.


Comment est-il possible de placer des comboboxes interdépendants dans un signalétique ? Par exemple pouvoir disposer d'un deuxième jeux "rayons - familles". Ceci associé aux champs  S_ID_RAY2 et  S_ID_FAM2 de la ta table STOCK.


Voir aussi : Gestion des rayons / familles / sous-familles supplémentaires