Gå til innhold

Refresh av DataGridView etter update


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 av HDSoftware
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...