Toon posts:

[ASP.NET / VB.NET] probleem met viewstate

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb drie bestanden:
1: klant.aspx
2: navbar.ascx
3: klant_uitgebreid.ascx

klant.aspx bevat de klant naam, klant id en een dropdownlist met al mijn klanten (voor gemakkelijk wijzigen van de klant die bekeken wordt).
verder staan er twee placeholders. plcNavBar, waar de navbar in wordt geladen, plcKlantUitgebreid, waar klant_uitgebreid in wordt geladen.

navbar.ascx bevat 5 knoppen. Wanneer er op een van de knoppen wordt geklikt wordt een placeholder op klant.aspx zichtbaar/onzichtbaar gezet (er zijn eigenlijk meer bestanden uiteraard, en ieder heeft een eigen placeholder aangezien ik het nog niet voor elkaar heb verschillende bestanden na elkaar in een placeholder te krijgen maar dat is een ander verhaal).

klant_uitgebreid.ascx bevat gewoon wat veldjes uit de database. Deze zijn uiteraard gekoppeld aan de klant die op klant.aspx geselecteerd is.

Nu is mijn probleem dat wanneer ik op klant.aspx een andere klant selecteer, dat deze niet meeverandert op klant_uitgebreid.ascx. Wanneer ik nogmaals de klant wijzig worden de gegevens van de vorige klant zichtbaar op klant_uitgebreid.ascx (dus de 2e klant, en niet de 3e).

Ik heb ook wel een idee waarom dit gebeurd, de code wordt namelijk niet op de voor mij juiste manier uitgevoerd. Ik had op MSDN een artikel gelezen over Viewstate waarin duidelijk werd dat ASP.NET eerst de page_init, page_load en dan pas postback events (zoals het wijzigen van een dropdownlist) uitvoert.

In klant_uitgebreid.ascx wordt in de page_load een functie gestart die de gegevens ophaalt en dit wordt eerder uitgevoerd dan de SelectedIndexChanged van mijn dropdownlist waardoor de klant_id nog niet juist is ingesteld en dus de verkeerde gegevens worden getoont in klant_uitgebreid.
Ik heb geprobeerd met sessies deze key wel mee te geven, maar helaas, ook dit gaat niet goed.

Ik vermoed dat dit is op te lossen door ergens iets met viewstate te doen, maar na 1 msdn artikel, 4 andere artikelen en de uitleg van een boek heb ik nog niet helemaal door hoe ik dit moet oplossen (jaja, beetje traag van begrip soms he ;) )

Ik hoop dat mijn probleem een beetje duidelijk is zo, en misschien kan iemand me een beetje in de goede richting duwen

Oh ja, ik gebruik ASP.NET in combinatie met VB.NET, mocht dat boeien.

Verwijderd

Topicstarter
kick

  • Eriksk
  • Registratie: December 2003
  • Niet online
Ik heb zo'n vermoeden dat je de databinding in je Page_prerender moet zetten. Tenminste, als ik zo'n probleem heb, dan ligt het daar aan...

Verwijderd

Bij de SelectedIndexChanged van je dropdownlist, moet je ook direct de databind functies van klant_uitgebreid.ascx uitvoeren. En dus niet na IEDERE postback in de page_load van klant_uitgebreid.ascx

Denk ik...

[ Voor 76% gewijzigd door Verwijderd op 24-05-2005 14:06 ]


Verwijderd

Topicstarter
Bedankt voor de reacties. Toevallig had ik het juist opgelost door het volgende te doen:

In de page_load (alleen postback) van klant.aspx stel ik de klant_id sessie in. Tot mijn verbazing begrijpt asp.net dan al wel dat het de nieuwe klant moet zijn en daarna wordt pas de data in klantuitgebreid.ascx geladen. Dat gaat dus helemaal goed.

Helaas had ik vervolgens het probleem dat het updaten/verwijderen/toevoegen van records niet meer werkt. Dit zal wel komen doordat ik bij het laden van klantuitgebreid.ascx de placeholder eerst leeg en vervolgens weer vul (toen ik dit niet deed kwam de inhoud dubbel en soms driedubbel te staan). Dat wordt weer puzzelen, maar als iemand een idee heeft sta ik daar natuurlijk voor open :)

edit: Het komt toch niet door het eerst legen en weer vullen. Wanneer ik dit niet doe doet ie het namelijk ook niet :( . Bij het toevoegen worden de velden in de footer wel zichtbaar en actief, alleen het daadwerkelijke toevoegen/wijzigen/verwijderen werkt niet)

[ Voor 16% gewijzigd door Verwijderd op 24-05-2005 15:50 ]