Gå til innhold

Anbefalte innlegg

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

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

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

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

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

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...