Oprettet tir. d. 03. juli 2007 kl. 23:37:06

carstensuurland
carstensuurland (13.230 point. Point ude: 1.630)

Problemer med IPostBackDataHandler

Kære Eksperter

Jeg har en side der bliver opbygget dynamisk via data fra en database. Der indstættes html elementer ved en override af sidens Render metode.

Mit problem består i, at kunne læse de valg en bruger har foretaget på siden, når denne postes tilbage til serveren.

Min side implementerer IPostBackDataHandler så jeg skulle kunne aflæse de posts der kommer, men jeg kan ikke rigtig finde ud af, at hente de data der bliver postet tilbage.

IPostBackDataHandler.LoadPostData metoden bliver fint nok kaldt, men jeg syntes ikke rigtig jeg kan finde de data jeg har brug for...

Er der nogen der har et virkende eksempel på hvordan man aflæser værdien af elementer der er indsat i en Render metode ved hjælpe af writer.Write()?

Skrevet tor. d. 05. juli 2007 kl. 09:48:43| #1

snepnet
snepnet (87.110 point)
Hvis du har en konstruktion alá:
protected override void Render(HtmlTextWriter writer)
{
  // some .WriteStuff
  base.Render(writer);
}
Vil du få det du renderer ud efter </html>
Er det sådan noget du har - eller renderer du hele siden selv?

Som udgangspunkt synes jeg det er en skidt idé, men hvis du sørger for at rendere  f.eks. dine inputfelter inde i din form, kan du hente dem med Request.Form["id'et på html-elementet"].

Hvordan kan det være du gør det på den måde... Det er ikke så hmm... ASP.NET-like.

Mvh

Skrevet tor. d. 05. juli 2007 kl. 10:04:54| #2

carstensuurland
carstensuurland (13.230 point)
Jeg gør det egentligt for at lege lidt med postbacks af dynamisk oprettede felter. Også for at se hvordan jeg kan fange posts fra andre sites (f.eks gamle ASP eller PHP) til mine sider.

De elementer der genereres, kommer fra en web kontrol der ligger på siden, så dét at spørge på Request.Form["id"], fungerer ikke, da elementerne får et navn ala ctl00$EtEllerAndet$Ctl00@KontrollensID.

Hvis jeg så bare kunne finde ud af, at referere korrekt til felterne med det prefix de får, ville det være fint - og ClientID fungerer ikke her, da ASP.nET som sagt frefixer alle de elementer der oprettes.

Skrevet tor. d. 05. juli 2007 kl. 10:05:44| #3

carstensuurland
carstensuurland (13.230 point)
Og undskyld stavefejlene... :-)

Skrevet tor. d. 05. juli 2007 kl. 10:26:28| #4

neoman
neoman (32.315 point)
Jeg har selv en masse dynamiske kontroller, og de fleste af dem får jeg fat i ved også at lave en eventhandler til dem. Ved postback kan man inde i eventhandleren se det oprindelige ID.

Hvad mener du med "ClientID fungerer ikke her" ?  - den bliver jo strikket sammen, som du selv har bemærket (og får en værdi først det øjeblik kontrollen ER placeret i kontroltræet, dvs. assignet til sin parent osv osv).

Skrevet tor. d. 05. juli 2007 kl. 10:35:32| #5

neoman
neoman (32.315 point)
..og hvis jeg har misforstået det, og du således ønsker at hente værdier på dynamiske felter, men postback er trigget af et andet event, så er der jo altid viewstate - værdierne ligger der jo, når  har genskabt kontrollerne ved postback (altså hvis du kører det hele ASP.NET-like, som snepnet bemærker) :)

Skrevet tor. d. 05. juli 2007 kl. 14:16:01| #6

carstensuurland
carstensuurland (13.230 point)
Jeg har egentligt slettet koden igen koden igen det det funger af h.t., men det jeg gør er nogenlunde sådan hér:

På min Page (som bruger en Master):

<MitTagPrefix:MinKontrol ID="MinKontrol" />

I "MinKontrol" har jeg følgende HTML med i kontrollens designer:
<input type="hidden" name="<% =this.UniqueID %>" id="<% = this.UniqueID %>" />
Dette for at få raised events til min IPostBackDataHandler.

I kontrollens Render metode:
writer.Write "<input id='MitTekstFelt' name='MitTekstFelt' /">

Når der så laves postbacks til min side (og dermed min kontrol), så forsøger jeg at hente data via Request["MitTekstFelt"], men det giver intet resultat...

Skrevet tir. d. 31. juli 2007 kl. 00:06:49| #7

carstensuurland
carstensuurland (13.230 point)
Ingen fungerende svar. Lukker spørgsmålet

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

GridView og RowCommand

Oprettet den 22. maj 2012 kl. 17.34
faran giver 30 point for svar | Giv et svar »

Flere betingelser i repeater.

Oprettet den 15. maj 2012 kl. 21.45
fuldstop giver 60 point for svar | Giv et svar »

kombinere code behind og Javascript

Oprettet den 6. maj 2012 kl. 09.02
tjacob giver 30 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger