Avatar billede netro Nybegynder
23. august 2007 - 22:01 Der er 14 kommentarer

Postback & UpdatePanel

Jeg forsøger at lave et postback ved at rendere følgende fra en server control. Kontrollen ligger i et Ajax UpdatePanel på aspx-siden, men når linket klikkes, bliver der lavet et fuldt postback af hele siden. Hvorfor?

<a href="java script:__doPostBack('ctl00$Main$TabContainer1$TabPanel2$MinServerControl','')">Postback</a>
Avatar billede neoman Novice
23. august 2007 - 22:17 #1
et skud fra hoften : prøv at tilføje et ID til dit anchor element
Avatar billede netro Nybegynder
23. august 2007 - 22:32 #2
Jeg prøvede med <a id="abc" name="abc" href="...

Var det det du mente?
Avatar billede neoman Novice
23. august 2007 - 22:38 #3
Jeps - jeg kiggede på hvordan en asp:LinkButton ser ud på klienten, og det var den eneste forskel jeg kunne se..udover at dit __doPostBack argument ikke henviser til det <a man klikker på, men til noget andet. Har ikke styr på om det gør nogen forskel:O)
Avatar billede neoman Novice
23. august 2007 - 22:42 #4
I øvrigt - dit a-element bliver renderet  inde i UpdatePanelet vel ?? Hvis det ligger udenfor så skal det vel også defineres som trigger, og det ved jeg ikke hvordan man gør dynamisk.
Avatar billede netro Nybegynder
23. august 2007 - 22:42 #5
Det hjalp ikke desværre. Har du andre bud?
Avatar billede neoman Novice
23. august 2007 - 22:44 #6
Ikke på stående fod :-( har aldrig prøvet at trigge UpdatePanels med en kontrol som jeg selv renderer.
Avatar billede netro Nybegynder
23. august 2007 - 23:06 #7
Okay, men jeg har fundet ud af, at det er samme problem, hvis jeg bygger en linkbutton dynamisk i codebehind. Altså uden at bruge server kontrollen.

-- Codebehind:
LinkButton b = new LinkButton();
b.Text = "Postback";
b.Click += new EventHandler(this.aMethod);
this.PlaceHolder1.Controls.Add(b);

-- CodeInFront:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
    <ContentTemplate>
        <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </ContentTemplate>
</asp:UpdatePanel>

Hvis jeg har min linkbutton liggende statisk i aspx-filen, virker det fint.

Måske det er lettere at debugge?
Avatar billede neoman Novice
23. august 2007 - 23:13 #8
Okaay - det kunne jo tyde på det sædvanlige problem med dynamisk tilføjede kontroller.

Når du har en sådan, skabt i pageload, eller i en eller anden event handler som eksekveres senere, så skal den efter postback genskabes senest i PageLoad, ellers kan den event som er trigget på kontrollen, ikke finde sin kontrol, og dermed heller ikke sin eventhandler.
Avatar billede netro Nybegynder
23. august 2007 - 23:17 #9
Burde den ikke blive det, når jeg add'er den som ovenstående i pageload?
Avatar billede neoman Novice
23. august 2007 - 23:25 #10
Jo :-) det kunne jeg ikke gætte ud fra den viste kode:) Hvis du ikke har !isPostBack foran, så burde det i teorien fungere. Det viser så at jeg ikke kender teorien godt nok.
Du kunne prøve at lede lidt inde på http://forums.asp.net/ - man kan faktisk finde nogle guldkorn derinde.
Avatar billede neoman Novice
23. august 2007 - 23:35 #11
Jeg er nødt til at tage mig lidt af mine egne problemos nu, men her er et par poster som måske har relevans for dig - nogle af dem indeholder videre links - check them out:)

http://forums.asp.net/p/1095985/1662848.aspx
http://forums.asp.net/p/1140710/1834398.aspx
Avatar billede netro Nybegynder
23. august 2007 - 23:51 #12
Tak. Jeg har løst en del af problemet nu. Følgende i pageload gør postback partiel.

LinkButton b = new LinkButton();
b.ID = "qwerty";
b.Text = DateTime.Now.ToString();
b.CausesValidation = false;
b.Click += new EventHandler(this.aMethod);
ScriptManager.GetCurrent(this.Page).RegisterAsyncPostBackControl(b);
this.PlaceHolder1.Controls.Add(b);
Avatar billede neoman Novice
24. august 2007 - 13:40 #13
Well done ! Det burde jeg have gættet mig til, at det var registreringen som manglede:)
Avatar billede netro Nybegynder
25. august 2007 - 02:21 #14
Det virker fint, når jeg registrerer kontrollen på denne måde. Nu har jeg bare et sidste problem. Når der laves postback, så er det ligesom, at javascriptet "dør". Det har ikke den samme funktionalitet som før postback?
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