Klette Skrevet 10. juni 2004 Del Skrevet 10. juni 2004 Har et lite problem, jeg bruker denne koden til å legge til ting i et datagrid public int getKunder() { DataSet Kundedb=new DataSet(); DataTable KunderX = new DataTable("Kunder"); if(System.IO.File.Exists("kunder.xml")) { Kundedb.ReadXml("kunder.xml"); this.textBox1.Text = "Funka"; dataKunder.DataSource = Kundedb; } else { this.textBox1.Text = "Fiks noe"; } return 1; } Greit nok, men I datagrid'en må man trykke seg frem til der hvor selve kundene ligger, jeg ønsker at den skal gå rett dit. xml filen ser forøverig slik ut: <?xml version="1.0" encoding="utf-8" ?> <kunder> <kunde> <fornavn>Ola</fornavn> <etternavn>Normann</etternavn> <adresse>Hakkebakkeskogen 5</adresse> <telefon>12345678</telefon> <email>[email protected]</email> </kunde> <kunde> <fornavn>Olar</fornavn> <etternavn>Normann</etternavn> <adresse>Hakkebakkeskogen 5</adresse> <telefon>12345678</telefon> <email>[email protected]</email> </kunde> </kunder> Noen tips? Lenke til kommentar
TAFT Skrevet 11. juni 2004 Del Skrevet 11. juni 2004 I et datasett kan du ha mange tabeller, og disse kan ha relasjoner. Dersom du oppgir kun datasettet som datasource vil du kunne browse mellom de forskjellige tabellene. Siden du vil ha en spesifikk tabell må du oppgi denne som datasource, f.eks. dataKunder.DataSource = Kundedb.Tables[0] Her forutsetter vi at det er tabell 0 i datasettet. Du kan også bruke navnet på tabellen. PS. Skjønner ikke hvorfor du oppretter en DataTable i koden din da du ikke legger den til datasettet, eller bruker den til noe annet. DataTable KunderX = new DataTable("Kunder"); Lenke til kommentar
Klette Skrevet 11. juni 2004 Forfatter Del Skrevet 11. juni 2004 prøvd meg frem mye Tusen takk, funka flott Lenke til kommentar
Klette Skrevet 11. juni 2004 Forfatter Del Skrevet 11. juni 2004 Mens jeg har deg der , finnes det en enkel metode å skrive endringene som er gjort i DataGrid'en til xml filen? Lenke til kommentar
TAFT Skrevet 11. juni 2004 Del Skrevet 11. juni 2004 Datagriden har bundet seg til datasourcen, i dette tilfellet datasettet, slik at endringene er i datasettet. Det du kan gjøre er: if (mittDataSet.HasChanges()) { DataSet changes = mittDataSet.GetChanges(); changes.WriteXml("filnavn.xml"); } GetChanges gir deg alt som er endret i datasettet. Lenke til kommentar
Klette Skrevet 11. juni 2004 Forfatter Del Skrevet 11. juni 2004 Ser ikke ut til at den får med seg endringene, her er den ytterst tunge og nybegynner koden min public int getKunder(string y) { DataSet Kundedb=new DataSet(); if(y == "open") { if(System.IO.File.Exists("kunder.xml")) { Kundedb.ReadXml("kunder.xml"); this.textBox1.Text = "Funka"; dataKunder.DataSource = Kundedb.Tables[0]; } else { this.textBox1.Text = "Fiks noe"; } return 1; } else if(y=="lagre") { if(Kundedb.HasChanges()) { DataSet changes = Kundedb.GetChanges(); changes.WriteXml("kunder.xml"); this.textBox1.Text = changes.ToString(); } return 2; } return 0; } Lenke til kommentar
TAFT Skrevet 14. juni 2004 Del Skrevet 14. juni 2004 Du deklarerer KundeDb i metoden din: DataSet Kundedb=new DataSet(); Denne kan selvsagt ikke ha endringer da du nettopp opprettet den. Uansett BØR du deklarere KundeDb utenfor denne metoden, da DataSettet strengt tatt egentlig skal destrueres når du forlater metoden. GC'en gjør ikke dette siden datagriden fortsatt har referanse til denne. Tror det er mest ryddig å lage deg TO metoder, en for lesing og en for skriving. Det er ikke logisk å bruke en metode som heter "getKunder" når du skal skrive. Ser ut som du har programmert i C med alle return-statementene dine. Prøv å bruke exceptions i stedet. 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å