Avatar billede henrikgn Nybegynder
19. december 2005 - 16:52 Der er 8 kommentarer og
1 løsning

Opdatering af usercontrol

Hejsa

Jeg har et spørgsmål angående usercontrols - det minder en del om http://www.eksperten.dk/spm/562771, men løsningen mangler stadig.

Jeg har en gæstebog, hvor man skriver sin besked for oven og de forskellige indskrifter vises i en usercontrol på nederste halvdel af siden.

Når der indtastes en besked og denne sendes afsted (siden får et postback) så opdateres usercontrollen ikke! Og det er selvom at usercontrollens Page_Load metode indeholder virkende kode til at hente fra databasen. Hvis man herefter opdaterer siden, vises den nye indskrift først.

Hvordan kan dette være? Og er der en måde man kan "opdatere usercontrol'en på?
Avatar billede snepnet Nybegynder
19. december 2005 - 18:56 #1
page_load i din usercontrol kører før din eventhandler på din page... det er derfor du ikke få noget at se før efter næste postback.

du kan bare lægge koden der viser indholdet i databasen i en public metode for sig, og så give mulighed for at kalde det udefra ved en metode (Refresh() f.eks.).

spørg løs hvis der er noget du er i tvivl om.

mvh
Avatar billede henrikgn Nybegynder
20. december 2005 - 11:49 #2
Spørgsmål... Jeg har flyttet koden fra usercontrol'ens Page_Load til en public metode Opdater(). Denne kalder jeg så på følgende måde, når der skrives i gæstebogen:

clsIndskrifter ucKlasse2 = new clsIndskrifter();
ucKlasse2.OpdaterIndskrifter();
Avatar billede henrikgn Nybegynder
20. december 2005 - 11:49 #3
...men det giver fejlen "System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt.", når den forsøger at opdatere usercontrol'en. Hvad gør jeg forkert?
Avatar billede snepnet Nybegynder
20. december 2005 - 12:15 #4
du instantierer en ny forekomst af din kontrol her:
clsIndskrifter ucKlasse2 = new clsIndskrifter();
og kalder Opdater.. på den, men det giver umiddelbart ikke særlig meget mening - da den hverken er indsat i kontroltræet eller noget.

du skal have fat i den aktuelle.

mvh
Avatar billede henrikgn Nybegynder
20. december 2005 - 12:37 #5
Aha... Og hvordan gør jeg så det, når metoden OpdaterIndskrifter ligger i klassen clsIndskrifter i indskrifter.ascx.cs og denne skal kaldes fra klassen clsGuest i guest.aspx.cs (som er code-behind til hovedsiden)?
Avatar billede snepnet Nybegynder
20. december 2005 - 12:42 #6
hvis du har trukket kontrollen ind på siden (og deraf har den angivet deklarativt i din aspx-fil) kan du lave en medlemsvariabel til kontrollen:

protected clsIndskrifter <dit id fra aspx-filen>;

så kan du tilgå den som med alle andre objekter:
// vi sige du har angivet id="minKontrol" i aspx-en
minKontrol.OpdaterIndskrifter();

mvh
Avatar billede snepnet Nybegynder
20. december 2005 - 12:42 #7
hvis du bruger version 2.0 - behøver du ikke lave medlemsvariablen selv... så er kontrollen direkte tilgængelig.
mvh
Avatar billede henrikgn Nybegynder
20. december 2005 - 16:03 #8
Perfekt snepnet, det virker! Egentligt synes jeg det virker lidt åndssvagt at man selv skal lave medlemsvariablen, men det er vel også derfor de har lavet det om i 2.0. Jeg bruger stadig 1.1 (da min webhost ikke understøtter 2.0 endnu).

Læg et svar.
Avatar billede snepnet Nybegynder
20. december 2005 - 16:05 #9
ja - det er lidt fesent at den ikke fikser det selv pr. default, men sådan er der jo så meget :o)
mvh
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