HDSoftware Skrevet 28. desember 2010 Del Skrevet 28. desember 2010 Folkens. Jeg trenger å endre metoden jeg bruker til oppfriskningen av en DataGridView I dag gjør jeg noe slil: var NyKunde = db.CreateKunde(New Guid()); wForm w = new wForm(NyKunde); if (w.ShowDialog() == System.Windows.Forms.DialogResult.OK) { db.AddToKunder(NyKunde); dgvKunder.DataSource = null; dgvKunder.DataSource = from kunde in db.Kunder select new { Navn = kunde.Kundenavn, Adresse = kunde.Adresse, rec = kunde } dgvKunder.Columns["rec"].Visible = false; } Tillsvarende gjør jeg for både ENDRE og SLETT. Dette fungerer egentlig veldig greit, men når dette skjer så resettes jo hele listboksen og første post blir automatisk valgt. Aller helst vil jeg jo at den aktuelle posten blir i fokus og jeg vil jo helst slippe å lese inn hele kundebasen hver gang. Jada, jeg vet alt om filtrering og slikt. Det er ikke det jeg er ute etter. Jeg er simpelt hen ute etter å få til en refresh av datagridview på en enkel måte. Jeg vil altså slippe å kalle hele Select statementet på nytt... etc. etc. etc. Alle tips er hjertelig velkomne.... Lenke til kommentar
Icaro2 Skrevet 29. desember 2010 Del Skrevet 29. desember 2010 Aller helst vil jeg jo at den aktuelle posten blir i fokus Hei Når det gjelder å få linjen i fokus har jeg brukt dette med posistion via bindingsource men jeg regner med at du tilføyer en del inn i griden på forhånd og da må du vel selecte på nytt fra et datasett eller noe slikt? Posistion via bindingsource har jeg en følelse av at du kanskje allerede har prøvd men prøver alikevel ;-) bindingsource.Position = bindingsource.Find("Kolonnenavn", det som skal finnes); Lenke til kommentar
HDSoftware Skrevet 30. desember 2010 Forfatter Del Skrevet 30. desember 2010 (endret) Heisan., og takk for svar.. Du, jeg har faktisk aldri brukt BindingSource i det hele tatt og dette er faktisk det jeg lurer på om er selve løsningen for meg. Som du ser av eksempel koden min så "binner" jeg jo resultatet fra LINQ spørringen direkte til DataSource og jeg har en liten anelse om at dette ikke er riktig. Et annet spørsmålstegn ved koden min er jo måten jeg henter ut dataene på. Tenker her på : select new { Navn = record.Name, Adresse = record.Address, rec = record } Her får jeg jop et resultat som inneholder alt jeg trenger. Problemet er jo at selve recorden jeg får ut ikke har noen tilknytning til entiteten på noen annen måte en gjennom "rec". Et annet problem her er jo at feltene Navn, Adresse, etc. blir av typen STRING som ikke er referansert til recordens felter. Det betyr jo at en "edit form" som tar i mot "rec" kan endre på alle dataene i recorden, men siden resten av feltene i SELECT resultatet ikke er referanser så vil de aldri bli oppdatert. Sånn jeg ser det er det 3 måter å lese data på for plassering i en DataGridView: var records = rec from db.Kunder select rec; eller var records = rec from db.Kunder select new{Navn = rec.Navn, Adresse = rec.Adresse, record = rec}; eller som jeg ofte gjør var tmpRecords = fro, rec in db.Kunder select rec; List<KundeRecord> records = new List<KunderRecord>(); foreach(var r in tmpRecords) records.Add(new KundeRecord(r)); Her vil siste eksemplet kreve en record klasse slik: class KundeRecord { public string Navn { get{ return rec.Navn; } set{ rec.Navn = value;} } etc.etc. public Kunder rec{get; set;} public KundeRecord(Kunder pRecord) { rec = pRecord; } } Nå har jeg lekt litt med Entity Framework en stund og får en liten følelse av at det jeg driver med her er unødvendig. Virker som at EF inneholder alt dette og at jeg kunn trenger å definere BindingSource og slikt. Hva er egentlig "vbest practice" her ? Endret 30. desember 2010 av HDSoftware Lenke til kommentar
HDSoftware Skrevet 3. januar 2011 Forfatter Del Skrevet 3. januar 2011 Av 63 visninger er det kun 1 som har svart noe fornuftig. Ingen som lager database relatert programvare med DataGridView her kanskje? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå