Avatar billede daxiez Nybegynder
04. maj 2006 - 14:25 Der er 17 kommentarer og
1 løsning

Jeg skal bruge et java script i ASP.NET

Har fundet frem til ClientScript.RegisterStartupScript, men kan ikke helt finde ud af at bruge den  ! nogen der kan give et eksempel
Avatar billede snepnet Nybegynder
04. maj 2006 - 14:35 #1
if (!ClientScript.IsStartupScriptRegistered("someScript"))
{
    ClientScript.RegisterStartupScript(typeof(Page), "someScript", <ditScript som string>);
}
Avatar billede snepnet Nybegynder
04. maj 2006 - 15:04 #2
Men lige et spørgsmål... er det fordi du forventer at det script du angiver kører automatisk når siden "starter"?
Mvh
Avatar billede daxiez Nybegynder
04. maj 2006 - 15:11 #3
nej nej, kører den i en SelectedIndexChanged, men det er et script som skal ændre på en flash komponent så lidt tricky, er ikke særlig god til javascript !
Avatar billede snepnet Nybegynder
04. maj 2006 - 15:20 #4
ok fino - fik du den til at smide scriptet ud på siden?
mvh
Avatar billede daxiez Nybegynder
04. maj 2006 - 15:25 #5
Kan ikke få den til at reagere ! Det er vist en fejl i mine gnyffer " eller gåseøjne ! Kan jeg aldrig finde ud af !

protected void sel_vinkel_SelectedIndexChanged(object sender, EventArgs e)
    {
        string angle_num = sel_vinkel.SelectedValue.ToString();
        if (!ClientScript.IsStartupScriptRegistered("vinkel"))
        {
            ClientScript.RegisterStartupScript(typeof(Page), "vinkel", "window.document.milano_swf.SetVariable("angle", angle_num);");
        }
    }
Avatar billede snepnet Nybegynder
04. maj 2006 - 16:41 #6
det er nok hensigtsmæssig, hvis du laver dig en metode til det - efter et princip som dette:

string scriptFormatString = @"
function setAngle(angle)
{
  // her skal du så bruge det element du vil sætte det på
  // eventuelt (hvis du har flere af slagsen) kan det var en parameter på metoden
  document.getElementById('{0}').Angle = angle;
}

du kan så få lavet scriptet til en given kontrol:

string resultingScript = String.Format(scriptFormatString, someControl.ClientID);

hvilket du så kan benytte i RegisterStartupScript

... og så skal du self. sørge for at det bliver kaldt med de rigtige parametre.

mvh
Avatar billede daxiez Nybegynder
05. maj 2006 - 10:05 #7
OK, kan slet ikke så det til at virke i anden end almindelig HTML. Jeg har et script der hedder:
function changeAngle(angle_num)
{
    window.document.trappe_swf.SetVariable("angle", angle_num);
}

Vil gerne hvis du eller en anden kan lavet en konkret eksempel på hvordan man fyrer det af fra sin codebehind fil ! kan ikke forstå det skal være så problematisk !(
Avatar billede snepnet Nybegynder
05. maj 2006 - 10:23 #8
hvordan prøver du da at fyre det af nu ... altså - hvordan kalder du bemeldte funktion?
mvh
Avatar billede snepnet Nybegynder
05. maj 2006 - 10:31 #9
hvis du gerne vil lave det hele programmatisk, kan du lave noget i denne stil:

private string scriptFormatString = @"
function setAngle(angle)
{
  alert(angle);
}

når du så skal have en kontrol til at kalde scriptet - kan du lave noget i denne stil:

// f.eks. i page_load
Button btn = new Button();
btn.Attributes.Add("onclick", "setAngle('45');");

// sikring af at scriptet kommer med ud på siden
string resultingScript = String.Format(scriptFormatString, someControl.ClientID);
if (!ClientScript.IsStartupScriptRegistered("angleScript"))
{
    ClientScript.RegisterStartupScript(typeof(Page), "angleScript", resultingScript, true);
}

så skulle du gerne få kaldt metoden når du trykker på knappen - inden der udføres et postback.

mvh
Avatar billede snepnet Nybegynder
05. maj 2006 - 10:35 #10
ups ... du skal så også lige smide kontrollen ind i kontroltræet (inden du prøver at finde id'et på den).

// f.eks. i page_load
Button btn = new Button();
btn.Attributes.Add("onclick", "setAngle('45');");
form1.Controls.Add(btn);

hvis kontrollen er indsat deklarativt - skal du bare bruge den direkte (altså ikke noget med new Button():

// sikring af at scriptet kommer med ud på siden
string resultingScript = String.Format(scriptFormatString, dinKnap.ClientID);
if (!ClientScript.IsStartupScriptRegistered("angleScript"))
{
    ClientScript.RegisterStartupScript(typeof(Page), "angleScript", resultingScript, true);
}

Og... når du nu alligevel benytter 2.0 - kan du angive det script der skal køres direkte på din OnClientClick property på knappen istedet:
dinKnap.OnClientClick = "setAngle('45');";

mvh
Avatar billede daxiez Nybegynder
05. maj 2006 - 10:47 #11
hehe ja tak har jeg lige fundet ud af !

string jScript;
        jScript = "<script> function changeAngle(angle_num)";
        jScript +="{window.document.trappe_swf.SetVariable('angle', angle_num);";
        jScript += " } </script>";
        ClientScript.RegisterStartupScript(typeof(Page), "regJSval", jScript);
        Button10.Attributes.Add("onclick", "return changeAngle(20)");

Takker for din hjælp ! smid et svar ! tror den er ved at være løst !)
Avatar billede snepnet Nybegynder
05. maj 2006 - 11:11 #12
fino :o)
mvh
Avatar billede daxiez Nybegynder
05. maj 2006 - 14:25 #13
Lige en ting mere ! hvad ville "OnClientClick" hedde hvis man laver den som en dropdownlist ?
Avatar billede daxiez Nybegynder
05. maj 2006 - 14:26 #14
lidt som SelectedIndexChanged ?
Avatar billede snepnet Nybegynder
05. maj 2006 - 15:08 #15
Jeg tror ikke den har sådan en desværre - så der er du fortsat hensat til at skrive attributten direkte.
Mvh
Avatar billede keysersoze Ekspert
05. maj 2006 - 15:19 #16
onchange måske?
Avatar billede daxiez Nybegynder
05. juli 2006 - 11:22 #17
tillægsspørgsmål !

string JScriptTrin = "<script> function changeSteps(step_num)";
      JScriptTrin += "{ window.document.trappe_swf.SetVariable('steps',step_num); }";
      JScriptTrin += "function changeAngle(angle_num)";
      JScriptTrin += "{window.document.trappe_swf.SetVariable('angle', angle_num);}";

JScriptTrin += " onload=changeAngle("vinkel");changeSteps("trin")";

Den sidste linie hvor jeg kalder 2 funktioner virker ikke ! Det er kun den første der bliver kaldt ! hvordan skal man gøre det ?
Avatar billede daxiez Nybegynder
05. juli 2006 - 11:32 #18
man skal bare droppe "onload" også så bare kalde dem sådan:
changeAngle("vinkel");changeSteps("trin")";
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