28. februar 2006 - 18:05Der 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é?
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.
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.
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...
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
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.
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.