Avatar billede lasserasch Juniormester
30. januar 2008 - 15:43 Der er 5 kommentarer og
1 løsning

Opdatering af Gridview virker ikke.

Hej drenge.

Jeg har en XML source, som skal bruges til at opdatere et gridview.

XML'en er fin nok, og første gang mit gridview indlæses, virker alt også OK.

Men når jeg reloader siden, og min XML source har ændret sig, så bliver disse ændringer ikke afspejlet i mit GridView.


Her er metoden som opdaterer mit gridview :

private void UpdateGrid()
{
dk.sdu.webred.Publishing publishing = new dk.sdu.webred.Publishing();
          XmlDataSource1.Data = publishing.GetQueueDetails();
          XmlDataSource1.DataBind();
          GridView1.DataBind();
}


Hvis jeg indsætter et breakpoint kan jeg se at XmlDataSource1.Data får den korrekte nye XML kilde, så den bliver altså opdateret.

Hvorfor pokker bliver mit grid så stadig ved med at vise de gamle værdier?



Mvh.
Lasse
Avatar billede powerpunk Nybegynder
30. januar 2008 - 16:03 #1
Du har jo ikke (i den kode du har postet) ændret i Gridview1's DataSource...

  XmlDataSource1.Data = publishing.GetQueueDetails();

tildeler en ny datakilde til XmlDataSource1.Data, men GridView1 har stadig reference til det den havde før...
Avatar billede lasserasch Juniormester
30. januar 2008 - 22:30 #2
Gridview1's DataSource har jeg sat i designeren til at være XmlDataSource1.

Hvorfor skal jeg ændre det for hvert load af siden? Når jeg opdaterer XML dataerne for XmlDataSource1 og Gridview1 bruger XmlDataSource1 som sin kilde, bør Gridview1 så ikke afspejle den aktuelle datastreng som XmlDataSource1 har?

Du mener at jeg skal oprette min XmlDataSource forhvert load af siden og tilknytte den nyoprettede xmldatasource til mit gridview eller?

Jeg har ikke arbejdet så meget med gridviews, så beklager hvis mit spørgsmål måske virker lidt tåbeligt.... :-)

Mvh.
Lasse
Avatar billede powerpunk Nybegynder
31. januar 2008 - 08:50 #3
Sorry, min fejl... GridView1's DataSource peger selvfølgelig på XmlDataSource1 og ikke på XmlDatSource1.Data. Den reference er uændret. :-P

Så du har ret - det burde være helt efter bogen...

Jeg har forsøgt at lave en lille side med en XmlDataSource og et GridView. På formen er der en knap, og i handleren til den knap ændrer jeg i min XmlDataSource og DataBinder den. sådan her:

  protected void Button1_Click(object sender, EventArgs e)
  {
    XmlDataSource1.DataFile = @"~/xmldata2.xml";
    XmlDataSource1.DataBind();
  }

Og det virker efter hensigten.

Hvornår kalder du UpdateGrid?
Avatar billede lasserasch Juniormester
31. januar 2008 - 09:14 #4
Jeg kalder UpdateGrid ved Page_Load.

Det eksempel du kommer med, da trækker du data ud fra en xml fil.
Det kan jeg også sagtens få til at virke.

Men GridViewet har en .Data property, som jeg gerne ville bruge, da jeg får min XML string direkte fra et webservice kald.

Så det er lidt noget makværk at skulle til at gemme en xml fil først og så læser fra den.

/Lasse
Avatar billede powerpunk Nybegynder
31. januar 2008 - 09:54 #5
Prøv at sætte EnableCaching = false på din DataSource

Og så giver det vist også bøvl, hvis du initielt har loadet Xml gennem DataFile property'en.

Hvis jeg slår caching fra på DataSource'en og kun leverer XML gennem Data property'en ser det ud til at køre...
Avatar billede lasserasch Juniormester
31. januar 2008 - 12:48 #6
Jeps. Det virkede.... Takker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester