Avatar billede carstensuurland Nybegynder
03. juli 2007 - 23:37 Der er 6 kommentarer og
1 løsning

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()?
Avatar billede snepnet Nybegynder
05. juli 2007 - 09:48 #1
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
Avatar billede carstensuurland Nybegynder
05. juli 2007 - 10:04 #2
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.
Avatar billede carstensuurland Nybegynder
05. juli 2007 - 10:05 #3
Og undskyld stavefejlene... :-)
Avatar billede neoman Novice
05. juli 2007 - 10:26 #4
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).
Avatar billede neoman Novice
05. juli 2007 - 10:35 #5
..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) :)
Avatar billede carstensuurland Nybegynder
05. juli 2007 - 14:16 #6
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...
Avatar billede carstensuurland Nybegynder
31. juli 2007 - 00:06 #7
Ingen fungerende svar. Lukker spørgsmålet
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



IT-JOB

Capgemini Danmark A/S

Salesforce CTO - Nordics

Udviklings- og Forenklingsstyrelsen

Webanalytiker til digitale løsninger

Danmarks Meteorologiske Institut

IT-operatør søges til DMI

Udviklings- og Forenklingsstyrelsen

Data Scientist til stærkt data- og analysekontor

IT & Co ApS

IT-tekniker