HDSoftware Skrevet 5. mai 2009 Del Skrevet 5. mai 2009 Heisan Sett at man har følgende tabell struktur: Poststeder -->> Kontakter Så har man følgende LINQ uttrykk: var kontakter = from k in db.Kontakter select k; Dermed har jeg en iQueryable<Kontakter> som inneholder alle kontaktene med tilhørende poststed Jeg ønsker dermed å vise navn og poststed i en datagridview, men i selve datagrid viewet så kommer kontaktens relaterte post opp som et slags uttrykk for relasjonen og ikke selve verdien. Hvordan kan jeg endre dette by code? Jeg setter jo opp datagrid viewet slik: dgvKunder.DataSource = kontakter; foreach (DataGridViewColumn c in dgvKunder.Columns) { c.Visible = false; } dgvKunder.Columns["Kontaktnavn"].Visible = true; dgvKunder.Columns["Kontaktnavn"].ColumnText = "Kundenavn"; dgvKunder["Hva skal det stå her for postdstedet"].Visible = True; .... All hjelp mottas selvsagt med takk.... Lenke til kommentar
The Jackal Skrevet 5. mai 2009 Del Skrevet 5. mai 2009 Hvis jeg ikke bommer helt her, så har du jo mistet hele relasjonen til poststed i det du henter ut bare kontaktene og vil vel derfor få et issue med å vise dem. Den første LINQ queryen må bli en join mellom begge tabellene skulle jeg tro...hvis jeg har forstått ting riktig. Lenke til kommentar
HDSoftware Skrevet 5. mai 2009 Forfatter Del Skrevet 5. mai 2009 nei. En LINQ query tar med seg alt som er definert i databasen. Det vil si at følgende er mulig: var kunde = (from k in db.Kontakter where k.KundeID = 1234 select k).FirstOrDefault(); MessageBox.Show(k.Fulltnavn + " bor i " + k.Poststeder.Poststed + " med postnummer = " + k.Poststeder.Postnr); Dette for kunn en record. Skal man ha et helt datasett kan man gjøre slik: var kunder = from k in db.Kontakter select k; foreach(Kontakt k in kunder) MessageBox.Show(k.Fulltnavn + " bor i " + k.Poststeder.Poststed + " med postnummer = " + k.Poststeder.Postnr); som gir en liste Ganske fancy serru. Poenget er at LINQ jobber veldig tett imot SQL serveren og oppbyggingen av SQL databasen er veldig sentralt. Jeg synes iallefall dette er kjempekult og sparer meg for masse koding Lenke til kommentar
The Jackal Skrevet 5. mai 2009 Del Skrevet 5. mai 2009 (endret) humm....så "Poststeder -->> Kontakter" er ikke en en-til-mange relasjon? Hvis Kontakt objektet ditt består av mange Poststeder, så er det litt misvisende. Eller er Poststeder propertyen på Kontakt objektet egentlig Postaddresse? scratch det der...tenkte (ikke) litt fort her xD Jeg er forsåvidt klar over hvordan LINQ fungerer, men det var litt uklart hvordan ting er sydd sammen i koden din etter bare å ha lest første post Tror jeg har det klart hvordan ting er hos deg nå...må bare tenke litt videre hvordan det skal løses ^^ Endret 5. mai 2009 av The Jackal Lenke til kommentar
GeirGrusom Skrevet 5. mai 2009 Del Skrevet 5. mai 2009 Kan det tenkes at du er ute etter en inner join her? Lenke til kommentar
The Jackal Skrevet 5. mai 2009 Del Skrevet 5. mai 2009 private void Form1_Load(object sender, EventArgs e) { List<Kontakt> kontakter = new List<Kontakt>(); Kontakt kontakt = new Kontakt(); kontakt.Fornavn = "Per"; kontakt.Etternavn = "Hansen"; PostAddresse addresse = new PostAddresse(); addresse.PostNummer = 0192; addresse.PostSted = "Oslo"; kontakt.PostAddresse = addresse; kontakter.Add(kontakt); kontakt = new Kontakt(); kontakt.Fornavn = "Ole"; kontakt.Etternavn = "Olsen"; addresse = new PostAddresse(); addresse.PostNummer = 0195; addresse.PostSted = "Oslo"; kontakt.PostAddresse = addresse; kontakter.Add(kontakt); var query = from k in kontakter select new {k.FulltNavn, k.PostAddresse.PostNummer, k.PostAddresse.PostSted}; dataGridView1.DataSource = query.ToList(); } Dette fungerer fint hos meg i alle fall...håper det kan være litt til hjelp Griden vil da automatisk bygge seg opp med kolonner og 2 rader. Lenke til kommentar
HDSoftware Skrevet 5. mai 2009 Forfatter Del Skrevet 5. mai 2009 Jeg er ikek ute etter noen ting som helst her fordi alt som hr med database ting å gjøre er allerede håndtert i LINQ. Jeg vil bare vise de relaterte postene i resultatsettet jeg i en datagrid Lenke til kommentar
HDSoftware Skrevet 5. mai 2009 Forfatter Del Skrevet 5. mai 2009 private void Form1_Load(object sender, EventArgs e) { List<Kontakt> kontakter = new List<Kontakt>(); ......... kontakter.Add(kontakt); var query = from k in kontakter select new {k.FulltNavn, k.PostAddresse.PostNummer, k.PostAddresse.PostSted}; dataGridView1.DataSource = query.ToList(); } Dette fungerer fint hos meg i alle fall...håper det kan være litt til hjelp Griden vil da automatisk bygge seg opp med kolonner og 2 rader. Ja. dette er en måte å gjøre det på, men det burde ikke være nødvendig å påvirke resultatsettet. Dessuten vil en slik måte å gjøre det på ta vekk en del grunnleggende funksjonalitet som følger med i Linq2SQL. Eksempelvis vil alle endringer man gjør i de relaterte postene bli lagret ved neste SubmitChangeds(). Gjør man det på denne måten som du viser til så må man også ta hensyn til alle disse tingene manuellt. Kansje en løsning vil være å legge til en ny kolonne og heller styre innholdet av denne på en eller annen måte. Lenke til kommentar
The Jackal Skrevet 5. mai 2009 Del Skrevet 5. mai 2009 Problemet her *tror* jeg er at DataGridViewTextBoxColumn (som jeg tror er default kolonnetype) ikke har DisplayMember property, eller no lignende. Hvis du ikke gjør det på måten jeg gjorde, eventuelt overrider ToString() på Poststeder klassen din til å returnere den stringen du vil ha i kolonnen, så tror jeg du må lage din egen kolonnetype for å fikse det, eller lage en egen CellTemplate til kolonnen Dette er forøvrig ganske lett i WPF Lenke til kommentar
HDSoftware Skrevet 6. mai 2009 Forfatter Del Skrevet 6. mai 2009 hmmm. Mange som snakker om WPF om dagen. Tell me more, tell me more-... Hvordan bruker jeg WPF? Er det bare å designe på vanlig måte? Eller er dette mere vridd i retningen hvordan man lager WEB sider? Lenke til kommentar
The Jackal Skrevet 6. mai 2009 Del Skrevet 6. mai 2009 Tja...det ligner jo ikke html i det hele tatt...men selve GUIen på appikasjonen skrives i XAML (xml lignende syntaks). Dvs...du kan fint utforme selve GUI ved hjelp av drag'n'drop som i vanlig forms, eller du kan velge å skrive markupen selv. Nå finnes det faktisk ikke en datagrid i default WPF, men MS har releaset en WPFToolKit hvor du får det du trenger, og jeg tror planen er at dette etterhvert blir en del av default installasjonen (C# 4.0 sikkert). Den kan lastes ned her: http://www.codeplex.com/wpf 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å