Avatar billede challengers Nybegynder
01. juni 2005 - 10:37 Der er 18 kommentarer

Trigge server-side event på en anden .aspx side

Hej Eksperter!

Jeg er i gang med at lave et system, der er bygget op med frames.
Jeg vil gerne kunne trigge en server-side event på "side1.aspx" fra "side2.aspx".

Jeg har fundet ud af, at man kan udføre __postback funktionen på "side1.aspx" med følgende javascript fra "side2.aspx":

top.content.execScript("__doPostBack('btnUndo','')","JavaScript");

btnUndo er erklæret således på "side1.aspx":

<asp:Button ID="btnUndo" OnClick="UndoEdit" Text="Annullér" CssClass="Button" Runat="server" />

Men jeg vil gerne undgå at have btnUndo erklæret på "side1.aspx" og så have en tilsvarende knap på "side2.aspx" som så udfører den event, som btnUndo ellers udfører.

Kan det lade sig gøre?
Avatar billede dr_chaos Nybegynder
01. juni 2005 - 10:49 #1
hvis du bruger code behind filer kan du referer til side1.aspx med
side1 s = new side1.aspx()
og hvis din knap på side1.aspx er public i stedet for protected så kan du tilføje en eventhandler:
s.btnUndo.click +=new EventHandler(btnUndo_click);

og så kan du udfører hvad du vil i
private void btnUndo_click(object sender, System.EventArgs e)
{}
Avatar billede dr_chaos Nybegynder
01. juni 2005 - 10:50 #2
begge sider skal bare tilhører samme namespace.
Avatar billede challengers Nybegynder
01. juni 2005 - 10:55 #3
Den event-handler jeg skal kalde på "side1.aspx" behandler værdier fra formen på "side1.aspx", og det vil den ikke kun gøre med ovennævnte eksempel.

Eller er det mig, der ikke helt kan gemmenskue det?
Avatar billede challengers Nybegynder
01. juni 2005 - 10:58 #4
gennemskue :)
Avatar billede dr_chaos Nybegynder
01. juni 2005 - 11:02 #5
er det muligt for dig at placere side1.aspx i en usercontrol ?
Avatar billede challengers Nybegynder
01. juni 2005 - 11:10 #6
Det kunne godt være en mulighed. Jeg synes bare de er besværlige at programmere, og når jeg ikke skal genbruge "side.aspx" funktionalitet, så er gevinsten for lille. Men vil jeg kunne kalde en event-handler i user control'en?
Avatar billede dr_chaos Nybegynder
01. juni 2005 - 11:11 #7
glem det med usercontrol. mig som vrøvler

Det du kan gøre er at når du trykker på knappen så gemmer du de relevante værdier i en session.
Når du så udfører postback på side1 så kan du hente værdierne i sessionen og parse dem til side1.aspx
Avatar billede dr_chaos Nybegynder
01. juni 2005 - 11:18 #8
Avatar billede dr_chaos Nybegynder
01. juni 2005 - 11:18 #9
i en frame altså
Avatar billede challengers Nybegynder
01. juni 2005 - 11:28 #10
ok. Så kan jeg vist lige så anvende querystring. Men det ville være helt kanon, hvis jeg kunne få kaldt den server-side event-handler.
Men jeg får mere og mere svært ved at se, hvordan det kan lade sig gøre. Måske laver jeg det ved at have knapperne på begge sider og så bare skjule dem på "side1.aspx"...
Avatar billede dr_chaos Nybegynder
01. juni 2005 - 11:43 #11
jeg tester lige noget
Avatar billede dr_chaos Nybegynder
01. juni 2005 - 12:00 #12
kan ikke finde andre metode desværre.
Avatar billede challengers Nybegynder
01. juni 2005 - 12:10 #13
okay. Bare i orden. Tak for hjælpen.
Avatar billede dr_chaos Nybegynder
01. juni 2005 - 12:12 #14
np
Avatar billede challengers Nybegynder
01. juni 2005 - 13:38 #15
Er der ikke flere forslag?
Avatar billede burningice Nybegynder
01. juni 2005 - 16:15 #16
challengers>> det er bare et spørgmål om at poste de rigtige data til siden. Når man trykker på f.eks. en knap på en side bliver den også bare postet til sig selv med nogle data i post. Det er så disse data du skal gengive så at siden tror at der er blevet trykke på f.eks. en knap.
Avatar billede challengers Nybegynder
02. juni 2005 - 08:28 #17
Det er sådan set også det jeg gør nu ved at kalde __dopostback metoden med den knap der er trykket på som parameter. Men det rkæver som sagt, at den knap er erklæret på den side, hvor event-handleren er. Det ville være smart, hvis man i stedet for at sende knappen med som parameter kunne angive den event-handler, der skulle tage sig af kaldet. Men det kan man ikke, så vidt jeg lige kan se.
Avatar billede burningice Nybegynder
02. juni 2005 - 20:06 #18
challengers>> det nytter ikke at kalde __dopostback på side1 når eventhandleren er på side2, for som du selv er inde på, så er eventhandleren på side2 og ikke side1.

Men det er sådan set heller ikke det jeg snakker om i 01/06-2005 16:15:22.

Det jeg kommer ind på er at du skal snyde side2 til at tro at der blev lavet et postback på den. Det kan du gøre med f.eks. WebRequest-klassen på side1, hvor du opretter en WebRequest, sætter de nøvdvendige POST-variabler og til sidst requester side2. Så har du nemlig snydt den til at tro at der er en browser i Langbortistan der har trykket på en knap, og den udfører den relevante eventhandler.

Det er dog noget FUSK (!!!). Hvis du har brug for en funktion der ikke skal være bundet til en enkelt side bør du lægge den i en Utility-klasse, så denne funktion kan kaldes allesteder fra.
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