Archief - .NET 4.5 Overerven van combobox

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

fat-beavis

Legacy Member
Mede programmeurs,

Ik zit met volgend probleem.
Voor een applicatie die ik voor mezelf maak had ik graag het volgende gerealiseerd, ik zal misschien eerst kort even schetsen wat er moet gebeuren , en wat ik al geprobeerd heb en wat uit den boze is.

Ik heb een een combobox die gebonden is via de datasource aan mijn database.
Ik draai uit mijn database ( Entity Framework op SQL ) een linq query van een bepaalde set en bind die vervolgens aan mijn combobox.

Maar nu zou op de combobox bij het laden niet meteen het eerste item van de query mogen bevatten, maar een blank entry, zodat ALS je dan op de dropdown krijgt, de normale lijst krijgt.


Ik heb momenteel een manuele combobox gemaakt ( omdat ik geen lege entries wil maken in mijn database ) die overerft van combobox.

Als ik de methode OnDataSourceChanged(e as eventargs) overschrijf dat hij, na het binden van de datasource zijn selectedindex op -1 zet lukt dat wel, dan heb ik vervolgens de OnKeydown overschreven dat ik hem kan blank maken door middel van return of delete toets te drukken.

Maar hier wringt het schoentje, als ik de combobox leeg maak door middel van return of delete wordt de datasource niet geupdate.
Concreet voorbeeld

Ik vul mijn combobox op met namen van landen, bij de sub SelectionChangeCommitted haal ik dan data uit de database gevonden met de selectedvalue.
Als ik op delete druk moet hij terug alles ophalen, dit zou te doen zijn om op form niveau een sub te schrijven onKeyDown die dan eventueel gaat kijken wat de huidige waarde is van de combobox.

Echter ik zit met zo'n 40 comboboxen en ik vroeg me af als dit niet mogelijk was in mijn Klasse waarin ik overerf van combobox.

Het ideale zou zijn dat ik gewoon een empty string kan toevoegen op de 0 index, daarmee zou alles op gelost zijn.

Heb al rond gezocht op internet maar zij praten allemaal van datatables waarin je dan eventuele een blanco row kunt toevoegen.

een leeg item toevoegen op de Linq Query is geen optie want diezelfde queries gebruik ik om PDF's uit te rollen of rapporten aan te vullen op Crystal Reports, dus lege values toevoegen op de datasource is geen optie.

Ik heb ook via codeproject de "NullableCombobox" gevonden , maar daar blijft de blanco row er niet, bij het activeren van de dropdown is die weg ( die je dan wel terug kan oproepen met op del of return te duwen )

Dus een lang verhaal kort gemaakt.

Heeft iemand een idee hoe ik een blanco string kan toevoegen aan een combobox , na de datasource is geset, misschien kan ik via mijn combobox klasse die datasource manipuleren ?
Dat dit dan enkel gebeurt bij de comboboxen?

Iemand een idee?

Moto

Legacy Member
Meestal voor combos maak ik een simpel ComboItem class aan Id + Name die ik terugkrijg van men database
En dan doe ik geen databinding maar add ik indien nodig een leeg item aan combo.items collectie en dan de list van comboItems, maak dan meestal wat extension methods aan voor een combobox

Ahja inheritance sucks, beter decorator of extension methods gebruiken

En als ge Entity framework gebruikt uw performance in het oog houden alles dat langer duurt dan 200 ms is TRAAG

fat-beavis

Legacy Member
Thanks for the tips !

Ik zal wat bijlezen over decorator.
Entity framework is momenteel OKE, constant laat ik programma lopen met Hibernathing Rhino's EF Profiler.
Query results zijn meestal binnen in enkele luttele ms.

Bedankt
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan