login  Naam:   Wachtwoord: 
Registreer je!
 Forum

gekoppelde comboboxen

Offline verhaba - 15/08/2010 21:25
Avatar van verhabaLid Hallo

Ik heb een form waar adres gegevens kunnen ingegeven worden. Hoe kan je twee comboboxen (bv postcode en gemeente) koppelen met elkaar. Als de gebruiker de postcode 1000 aan klikt, dat hij enkel de de gemeentes van het Brusselse terugvindt in de combox van de gemeentes.

Google brengt geen hulp... een aantal links naar zou welkom zijn  We kan me helpen? Alvast bedankt.

Bart

2 antwoorden

Gesponsorde links
Offline svm - 16/08/2010 11:53 (laatste wijziging 16/08/2010 12:10)
Avatar van svm PHP ver gevorderde AJAX.

Je gebruikt op de select-tag van de postcode een onchange-attribuut dat een functie aanroept die via AJAX een verbinding met de server legt.
De server zul je dan dus de postcode toe moeten sturen en vervolgens retourneert deze een lijst van alle daarbij behorende gemeenten.
Vervolgens update je de combobox met gemeentes via JS met deze lijst.

titjes schreef:
Het betreft hier een WindowsForm met ComboBox. Niet op een ASP.NET applicatie met een DropDownList. 
Offline Abbas - 16/08/2010 12:09
Avatar van Abbas Gouden medaille

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:

  1. //initialiseren van de Dictionary
  2. private Dictionary<int, String> _gemeenteLijst;
  3.  
  4. private void mainForm_Load(object sender, EventArgs e)
  5. {
  6. //Dictionary vullen met gegevens
  7. _gemeenteLijst = new Dictionary<int, String>
  8. {
  9. {1820, "Perk"},
  10. {1821, "Steenokkerzeel"},
  11. {1830, "Machelen"},
  12. {1831, "Diegem"},
  13. {1840, "Londerzeel"},
  14. {1842, "Malderen"},
  15. {1843, "Steenhuffel"},
  16. {1850, "Grimbergen"},
  17. {1851, "Humbeek"},
  18. {1852, "Beigem"},
  19. {1853, "Strombeek-Bever"},
  20. {1860, "Meise"},
  21. {1861, "Wolvertem"},
  22. {1880, "Kapelle-op-den-Bos"},
  23. {1881, "Nieuwenrode"},
  24. {1882, "Ramsdonk"},
  25. {1910, "Berg"},
  26. {1911, "Buken"},
  27. {1912, "Kampenhout"},
  28. {1913, "Nederokkerzeel"},
  29. {1930, "Nossegem"},
  30. {1935, "Zaventem"},
  31. {1931, "Brucargo"},
  32. {1932, "Sint-Stevens-Woluwe"},
  33. {1933, "Sterrebeek"},
  34. {1934, "Brussel X-Luchthaven"},
  35. {1936, "Bruxelles X-Aeroport"},
  36. {1950, "Kraainem"},
  37. {1970, "Wezembeek-Oppem"},
  38. {1980, "Eppegem"},
  39. {1983, "Zemst"},
  40. {1981, "Hofstade"},
  41. {1982, "Elewijt"},
  42. {1984, "Weerde"},
  43. {2000, "Antwerpen"},
  44. {2018, "Antwerpen"},
  45. {2020, "Antwerpen"},
  46. {2030, "Antwerpen"},
  47. {2040, "Antwerpen"},
  48. {2041, "Berendrecht"}
  49. };
  50.  
  51. //postcode - ComboBox vullen van 1000 tot en met 9000
  52. for (int i = 1000; i < 10000; i += 1000)
  53. codeComboBox.Items.Add(i);
  54. }
  55.  
  56. private void codeComboBox_SelectedIndexChanged(object sender, EventArgs e)
  57. {
  58. if (codeComboBox.SelectedItem != null)
  59. {
  60. naamComboBox.Items.Clear();
  61. //Deze regel doet al het werk ;)
  62. var items = _gemeenteLijst.Where(kvp => kvp.Key.ToString()[0].Equals(codeComboBox.SelectedItem.ToString()[0])).Select(kvp => kvp.Value);
  63. naamComboBox.Items.AddRange(items.ToArray());
  64. }
  65. }

Hopelijk kan je hiermee verder! 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.176s