Crew .NET |
|
Ik denk dat het gemakkelijkste is om met een Dictionary te werken. In het onderstaande voorbeeld vul ik die statisch maar je kan die net zo goed vullen met gegevens uit een DB. Wat je dan gaat doen is de postcode - ComboBox vullen met bijvoorbeeld de getallen 1000 tot en met 9000. Als je dan een van die items selecteert zal 1 regel(tje) de gemeentes ophalen waarvan de postcode met een hetzelfde getal begint als hetgeen je gekozen hebt in de postcode - lijst:
//initialiseren van de Dictionary
private Dictionary<int, String> _gemeenteLijst;
private void mainForm_Load(object sender, EventArgs e)
{
//Dictionary vullen met gegevens
_gemeenteLijst = new Dictionary<int, String>
{
{1820, "Perk"},
{1821, "Steenokkerzeel"},
{1830, "Machelen"},
{1831, "Diegem"},
{1840, "Londerzeel"},
{1842, "Malderen"},
{1843, "Steenhuffel"},
{1850, "Grimbergen"},
{1851, "Humbeek"},
{1852, "Beigem"},
{1853, "Strombeek-Bever"},
{1860, "Meise"},
{1861, "Wolvertem"},
{1880, "Kapelle-op-den-Bos"},
{1881, "Nieuwenrode"},
{1882, "Ramsdonk"},
{1910, "Berg"},
{1911, "Buken"},
{1912, "Kampenhout"},
{1913, "Nederokkerzeel"},
{1930, "Nossegem"},
{1935, "Zaventem"},
{1931, "Brucargo"},
{1932, "Sint-Stevens-Woluwe"},
{1933, "Sterrebeek"},
{1934, "Brussel X-Luchthaven"},
{1936, "Bruxelles X-Aeroport"},
{1950, "Kraainem"},
{1970, "Wezembeek-Oppem"},
{1980, "Eppegem"},
{1983, "Zemst"},
{1981, "Hofstade"},
{1982, "Elewijt"},
{1984, "Weerde"},
{2000, "Antwerpen"},
{2018, "Antwerpen"},
{2020, "Antwerpen"},
{2030, "Antwerpen"},
{2040, "Antwerpen"},
{2041, "Berendrecht"}
};
//postcode - ComboBox vullen van 1000 tot en met 9000
for (int i = 1000; i < 10000; i += 1000)
codeComboBox.Items.Add(i);
}
private void codeComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (codeComboBox.SelectedItem != null)
{
naamComboBox.Items.Clear();
//Deze regel doet al het werk ;)
var items = _gemeenteLijst.Where(kvp => kvp.Key.ToString()[0].Equals(codeComboBox.SelectedItem.ToString()[0])).Select(kvp => kvp.Value);
naamComboBox.Items.AddRange(items.ToArray());
}
}
//initialiseren van de Dictionary private Dictionary<int, String> _gemeenteLijst; private void mainForm_Load(object sender, EventArgs e) { //Dictionary vullen met gegevens _gemeenteLijst = new Dictionary <int, String> { {1820, "Perk"}, {1821, "Steenokkerzeel"}, {1830, "Machelen"}, {1831, "Diegem"}, {1840, "Londerzeel"}, {1842, "Malderen"}, {1843, "Steenhuffel"}, {1850, "Grimbergen"}, {1851, "Humbeek"}, {1852, "Beigem"}, {1853, "Strombeek-Bever"}, {1860, "Meise"}, {1861, "Wolvertem"}, {1880, "Kapelle-op-den-Bos"}, {1881, "Nieuwenrode"}, {1882, "Ramsdonk"}, {1910, "Berg"}, {1911, "Buken"}, {1912, "Kampenhout"}, {1913, "Nederokkerzeel"}, {1930, "Nossegem"}, {1935, "Zaventem"}, {1931, "Brucargo"}, {1932, "Sint-Stevens-Woluwe"}, {1933, "Sterrebeek"}, {1934, "Brussel X-Luchthaven"}, {1936, "Bruxelles X-Aeroport"}, {1950, "Kraainem"}, {1970, "Wezembeek-Oppem"}, {1980, "Eppegem"}, {1983, "Zemst"}, {1981, "Hofstade"}, {1982, "Elewijt"}, {1984, "Weerde"}, {2000, "Antwerpen"}, {2018, "Antwerpen"}, {2020, "Antwerpen"}, {2030, "Antwerpen"}, {2040, "Antwerpen"}, {2041, "Berendrecht"} }; //postcode - ComboBox vullen van 1000 tot en met 9000 for (int i = 1000; i < 10000; i += 1000) codeComboBox.Items.Add(i); } private void codeComboBox_SelectedIndexChanged(object sender, EventArgs e) { if (codeComboBox.SelectedItem != null) { naamComboBox.Items.Clear(); //Deze regel doet al het werk ;) var items = _gemeenteLijst.Where(kvp => kvp.Key.ToString()[0].Equals(codeComboBox.SelectedItem.ToString()[0])).Select(kvp => kvp.Value); naamComboBox.Items.AddRange(items.ToArray()); } }
Hopelijk kan je hiermee verder! |