Avatar billede torotune Nybegynder
24. april 2007 - 12:14 Der er 9 kommentarer og
1 løsning

JavaScript i UserControl

Hej,

Jeg har noget JavaScript på min default.aspx-side som fungerer fint. Hvis jeg laver en UserCotrol og sætter den på siden, og denne UserControl også indeholder JS, renderer den ikke det der er på min default-side, men kun det på min UserControl.

Hvordan kan det være?

Det i min UserControl består af en function GetCount()

som i UserControl'en hentes via:

window.onload=function(){GetCount();}
Avatar billede snepnet Nybegynder
24. april 2007 - 13:39 #1
Kan du vise hvad du har både på formen og kontrollen, så vi kan reproducere?
Har du kigget på ClientScript-api'et?
Mvh
Avatar billede crazysnap Seniormester
25. april 2007 - 23:17 #2
Hej torotune,

Den javascript metode du kalder på defaul.aspx siden, knytter du også den på window.onload event'en? For du kan kun assigne en function til din onload event på samme aspx side. Og idet din UserControl tilføjes til default.aspx siden bliver den ene onload function "overskrevet" af den anden (hvis det altså er det du gør). En mulig løsning ville være at proppe begge metode kald ind i din function du definerer ovenover, altså noget lignende:

window.onload=function(){ GetCount(); DenAndenMetode();}


Mvh.

-Snap
Avatar billede torotune Nybegynder
27. april 2007 - 11:04 #3
Hejsa begge!

Mener du AJAX mht. ClientScript-api'et Snepnet?

Jeg tror lidt crazysnap er inde på hvad det er der sker, tror den function på hovedsiden  bliver overskrevet (renderes UserControls inden hovedsiden?) - for hvis jeg lader den function der hedder GetCount() stå i usercontrol'en, men først kalder den på hovedsiden, efter hovedsidens function, så det ser således ud:

<script language="javascript" type="text/javascript">
    document.getElementById('<%= drp.ClientID %>').style.display='none'; 
    window.onload=function(){GetCount();}
</script>

ser det ud til at virke :-)

Men sætter jeg denne:

  document.getElementById('<%= drp.ClientID %>').style.display='none'; 

ind i min UserControl kan den ikke finde drp, som jo er en control på hovedsiden. Hvordan kommer man i kontakt med denne fra UserControl'en?
Avatar billede snepnet Nybegynder
27. april 2007 - 18:08 #4
Jeg mener ikke nødvendigvis ajax - Page.ClientScript giver dig en del forskellige muligheder for at registrere scripts etc.
Mvh
Avatar billede torotune Nybegynder
06. maj 2007 - 21:25 #5
Det vil jeg lige kigge på, jeg takker for hjælpen fra begge.. Problemet er løst, så I kan smide svar :-)
Avatar billede crazysnap Seniormester
07. maj 2007 - 09:36 #6
Hej torotune,


Glad for at kunne hjælpe, for min skyld tager du bare pointene selv (i det du selv fik løst det) og for lige for at svare på dine to spørgsmål fra 27/04-2007 11:04:50 hvis du ikke selv har fundet svaret:


1) Om UserControls intialiseres inden hovedsiden.

- Hovedsiden loades altid først og derefter dens usercontrols. Altså Page_Load kaldes først på hovedsiden og derefter på din(e) UserControl(s).


2) Hvordan kommer man i kontakt med drp fra UserControl'en når drp eksiterer på hovedsiden.

- Jeg kender ikke til andre løsninger end at du må lave en accessor (property) på din usercontrol så du kan assigne drp-control'en fra hovedsiden. Altså noget lignende:

Du har en accessor på på UserControl'en:

private <drp-Typen> m_drp;

public <drp-Typen> DrpControl
{
    set { m_drp = value; }
}



Og kalder den fra Page_Load på hovedsiden:

CustomUserControl.DrpControl = drp;



Nu skulle du så gerne kunne tilgå den ved:

document.getElementById('<%= m_drp.ClientID %>').style.display='none'; 

fra UserControl'en.



Mvh. :)

- Snap
Avatar billede torotune Nybegynder
11. maj 2007 - 22:40 #7
Hey Crazysnap! Tak for denne fine forklaring. Det var lige det jeg ledte efter, altså med at få den registreret på en eller anden måde så den kan findes fra hovedsiden med getElementById..

Det må jo så siges at være et svar værdigt -  :-)
Avatar billede crazysnap Seniormester
12. maj 2007 - 12:43 #8
Hej torotune,


Nå, men det er jo perfekt det lige var det du ledte efter. :)

Der kommer et svar herfra så... :)


Mvh.

- Snap
Avatar billede torotune Nybegynder
13. maj 2007 - 23:12 #9
Takker for det
Avatar billede crazysnap Seniormester
14. maj 2007 - 09:13 #10
Det var så lidt og tak for pointene! :)


Mvh.

- Snap
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