Toon posts:

[C#] Opvullen DataTable

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb voorlopig op een scherm (om orders aan te maken) wat controls staan die data halen uit een achterliggende DataSet. Eén van die controls is een combobox die wordt gevuld met klanten en de klantnaam toont. De data hiervoor wordt uit de DataTable klanten gehaald, die deel uitmaakt van die onderliggende DataSet.

Nu heb ik echter naast de combobox van klanten een "..." button voorzien waardoor het mogelijk is om een nieuwe klant aan te maken of een klant te wijzigen op een nieuw formpje. Als ik op de "..." button klik, open ik een nieuwe form, maak ik een nieuwe DataTable aan die klanten uit de database haalt (zo ben ik zeker dat ik ook nieuwe klanten binnenhaal), ik voer de wijzigingen uit op de DataTable en bij het sluiten van het form keer ik dan terug naar het form waarop de "..." button stond.

Nu wil ik natuurlijk dat de gegevens die in het klant form zijn toegevoegd, gewijzigd en verwijderd, ook zo in de combobox voorkomen.

Ik dacht dus om alle klanten opnieuw uit de db op te halen (of een datatable vanuit het klantform terug te geven), maar hoe vul ik de datatable klanten opnieuw???

Vb: Ik dacht de datatable klanten te legen via clear() en dan alle rijen opnieuw toe te voegen, maar dit gaat niet wegens actieve constraints. Met enforceconstraints false en dan weer true treden er ook problemen op. Voorlopig zoek ik een bestaande rij, update ik die. Komt een rij niet voor, voeg ik een nieuwe rij toe, maar oude rijen in de datatable klanten blijven zo steeds behouden :|

Ik maak het vermoedelijk te ingewikkeld (ik kon ook kiezen om gewoon een referentie naar de datatable mee te geven als ik het klant form opende, maar zo weet ik niet of er ondertussen nieuwe klanten zijn toegevoegd aan de database). Bestaat er geen simpele manier om alle elementen van een datatable te vervangen door een reeks andere elementen uit een andere datatable?

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Even een oude, dode koe uit de sloot halen: ik praatte geen poep hoor toen ik zei dat DataSets niet zo'n goede keuze zijn in sommige gevallen.

Wat je zou moeten doen is zo weinig mogelijk copien van dezelfde entities in memory houden, in jouw geval dus 'klant'. Dit houdt dus in dat de klanten-copien die je in memory geladen hebt in de dataset zitten achter je form. Wil je een nieuwe klant toevoegen, dan moet je editen op die datatable, immers dat is je view op de bestaande set klanten.

Je zou vlak voor de opening van het klantenedit scherm die table kunnen refetchen maar dat kan problematisch worden voor de andere data in je dataset. (je moet dan in feite de complete dataset refreshen). Het beste is de klant te adden aan die datatable en wanneer je de kans ziet die nieuwe row te inserten in de database dmv de data-adapter en de dataset.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com