Afhankelijke comboboxen in een informatiebestand

0000002324     -      11-10-2023

Dit kan heel eenvoudig, omdat mercator zelf over deze functie beschikt (voor rayons/families/sub-families en de gammas)

Men moet de volgende velden toevoegen in de tabel STOCK:

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

Men moet de combobox in de setupmodus associëren met deze 2 velden, en er 2 SQL-queries aan toevoegen.

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

We moeten de propertie ParentField van de combo S_ID_FAM2 geassocieerd met de waarde S_ID_RAY2 koppelen aan deze combo's.De SelectedValue van de combo zal worden doorgegeven als @id in de SQL-query. Deze verandering van de propertie wordt eenvoudig gedaan in de 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";
        }
    }
}

Doe anders niets. Mercator doet de rest.

Sinds versie 10.6.106 van MercatorUi.dll is dit mogelijk in alle aanpasbare schermen.


Hoe is het mogelijk om 2 van elkaar afhankelijke comboboxen te plaatsen in een informatiebestand? Bijvoorbeeld om te beschikken over een tweede spel "rayons-families". Dit in combinatie met de velden S_ID_RAY2 en S_ID_FAM2 uit de tabel STOCK.


Zie ook: Beheer van extra rayons / families / subfamilies