Avatar billede medjeti Nybegynder
28. februar 2006 - 18:05 Der er 7 kommentarer og
1 løsning

Hente værdi fra dynamisk control

Hey!

Jeg har en DataList med bl.a. en række checkboxes, som bliver skabt dynamisk. Når formen bliver submittet er jeg naturligvis interesseret i at vide hvilke checkboxe, brugeren har checket, men jeg løber tilsyneladende ind i en "hønen og ægget"-situation:
For at kunne tilgå en dynamisk kreeret control skal den genskabes - i mit tilfælde vha. DataList.DataBind(). Men idet jeg DataBind'er min DataList fyldes den jo op med de originale data og brugerens ændringer overskrives.
Nogen der har en go' idé?

På forhånd tak!
Avatar billede snepnet Nybegynder
28. februar 2006 - 21:04 #1
det er et spørgsmål om timing - men først:

er der en særlig årsag til at du laver dine checkboxe dynamisk, og ikke bare har dem i en template?

kan du vise et lille eksempel på hvordan du gør nu... altså - hvad gør du i
init
load
?
+ på hvilket tidspunkt (i hvilket event) forsøger du at tilgå checkboxene for at finde brugerens indastning.

mvh
Avatar billede medjeti Nybegynder
28. februar 2006 - 21:36 #2
Tak for inputtet...
Ups my bad, checkboxene ER i min ItemTemplate, og altså ikke dynamisk kreeret på den måde... Problemet er nu det samme: Jeg skal have rekreeret checkboxene før jeg kan trække værdien ud af dem.

Jeg ved godt at det har noget med pageflowet at gøre - jeg har forsøgt mig frem med forskellige kombinationer, men jeg har åbenbart ikke kunnet ramme den rigtige rækkefølge. Jeg troede jeg havde læst mig til, at man kunne rekreere sin DataList i Init, så den ville være klar til at blive populeret med de post'ede data i Load for derefter at kunne blive tilgået, men no cigar...
Det er for så vidt mig ligemeget hvor i flowet det sker, bare det lykkes mig at trække  postdata ud.
Jeg kan levere lidt kode imorgen, hvis det er nødvendigt.
Avatar billede snepnet Nybegynder
28. februar 2006 - 21:43 #3
du skal bare benytte en helt standard model så (forudsat at du ikke har slået viewstate fra):

// i page_load
if(!IsPostBack)
{
  BindList(); // går ud fra at du har noget der gør den del af det
}

// og i enhver handler der manipulerer data:
... kode ...
BindList();

hvis du bruger 2.0 kan du benytte en datasourcecontrol til at hjælpe med den slags.

mvh
Avatar billede snepnet Nybegynder
28. februar 2006 - 21:44 #4
du kan med ovenstående hente brugerens indtastninger ud i en given eventhandler i din kode (altså f.eks. handleren til et tryk på en knap ell.).
mvh
Avatar billede medjeti Nybegynder
02. marts 2006 - 13:28 #5
Hmm... jeg har i min eksperimenteren fået slået viewstate fra - når jeg slår den til igen giver det lidt sjove resultater: Nu bliver min DataList rekreeret helt ad sig selv -  uden at jeg kalder DataBind(), hvilket virker lidt besynderligt.
DataList.OnItemCreated eventen bliver desuden fyret for hvert Item i DataList'en, men det aktuelle DataItem er null istedet for det objekt, jeg har puttet i DataList.DataSource. Gad vide om der findes en logisk forklaring på den opførsel, eller om der er tale om endnu en "ups" fra Microsofts side?
Anyway, jeg tror _måske_ jeg kan få den snørklet, selvom det ikke bliver så kønt. Foreløbig tak for hjælpen...
Avatar billede snepnet Nybegynder
02. marts 2006 - 14:03 #6
det er ikke en upser... det er pr. design.
det er ikke så besynderligt at listen rekreeres - det er helt som det skal være, og også pr. design.
udfra antallet af tidligere items (efter din initiale databinding) oprettes items i datalisten og kontrollerne i det respektive item, får deres værdi fra viewstate.
at dataitem er null i forbindelse med rekreering baseret på viewstate, er for så vidt også logisk nok.
data er gemt i viewstate, og den oprindelige datakilde bevares ikke pr. default - hvilket ville være en forudsætning for at du kunne hente den i itemscreated.
men som nævnt ... hvis du benytter version 2.0 findes der værktøjer der kan gøre at du slipper for at forholde dig synderligt til problematikken.
mvh
Avatar billede medjeti Nybegynder
02. marts 2006 - 14:13 #7
Okay ja, det kan jeg måske godt se logikken i... jeg var nok bare lidt frustreret over at have bøvlet med det så længe. Jeg er ikke helt sikker på at kunderne er klar til 2.0 endnu, så indtil videre holder jeg mig oldschool.
Men nu ser det da ud til at virke - smid et svar så du kan få dine point.
Avatar billede snepnet Nybegynder
02. marts 2006 - 17:30 #8
kommer her :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