Avatar billede gulbaek Nybegynder
19. juli 2006 - 18:52 Der er 5 kommentarer og
1 løsning

Oprette javascript server side

Har følgende javascript.

function GetSnap1() {
  return <%# Snap1.ClientObjectId %>;
        }

Er det muligt at man igennem ens c# codebehind fil kan sende det javascript til aspx siden?
Skal nemlig dynamisk kunne oprette dem, for jeg ved ikke umiddelbart hvor mange jeg får brug for.

Det er følgende object jeg opretter
<ComponentArt:Snap id="Snap1"/>

Hvis nogen har et forslag til hvordan javascriptet skal se ud for at virke ligegyldigt hvor mange Snap objecter jeg opretter er der skam også point.
Avatar billede the_party_dog Nybegynder
19. juli 2006 - 18:59 #1
Du skal igang med at bruge en StringBuilder. Der skriver du bare dit javascript linje      for linje ved hjælp af Add funktionen i din stringbuilder.

Normalt når jeg laver det, benytter jeg Page.RegisterClientScriptBlock(KeyName, Script).
KeyName er det unikke navn der skal være for at dine javascripts ikke roder sig med hinanden, hvor Script selvfølgelig er dit javascript du lige har lavet...
Avatar billede gulbaek Nybegynder
19. juli 2006 - 19:14 #2
Du skulle vel ikke også have et forslag til hvordan jeg kan ændre koden så jeg ikke behøves at oprette en metode for hver Snap object jeg bruger, som min kode er nu, kalder jeg det på følgende måde.

onmousedown="GetSnap1().StartDragging(event);"

det er jo ikke særlig optimalt hvis jeg f.eks. vil benytte 10 Snap objecter.
Avatar billede the_party_dog Nybegynder
20. juli 2006 - 08:57 #3
Det er jo ganske nemt :-)

Du laver bare en løkke, som opretter en ny string builder hver gang, løkkens tæller bliver så bare nævneren til hvilket snap objekt du vil have fat i.

Ala:

StringBuilder SB = null;

for(int i = 1; i < 11; i++)
{
SB = new StringBuilder();
SB.Add("<script language="JavaScript">\r\n");
SB.Add("function GetSnap"+ i.ToString() +"() {\r\n");
SB.Add("return <%# Snap"+ i.ToString() +".ClientObjectId %>;\r\n");
SB.Add("}\r\n");
Page.RegisterClientScriptBlock("SnapFunction"+ i.ToString(), SB.ToSting());
}
Avatar billede the_party_dog Nybegynder
20. juli 2006 - 08:59 #4
Bare så du har en idé, du skal nok lige rette det lidt til.

har lige glemt SB.Add("</script>"); som skal ligge lige inden Page.RegisterClient.... Ellers vil din java script ikke være afsluttet og derfor vil det ikke kunne blive kørt.
Avatar billede gulbaek Nybegynder
26. juli 2006 - 20:07 #5
the_party_dog Kunne du tænke dig at komme med et svar, ser ikke ud til at nogen kommer med et forslag til en metode der er lidt mere general.

Men Takker for hjælpen :-)
Avatar billede the_party_dog Nybegynder
27. juli 2006 - 08:35 #6
Der kommer et svar her.. :)
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