Avatar billede agertoft Nybegynder
17. november 2004 - 01:08 Der er 6 kommentarer og
1 løsning

Fokus på kontrol

Jeg skal have sat fokus på en button-control i min usercontrol. Jeg har prøvet med disse to JavaScript-muligheder:

<script language="javascript">
    document.getElementById("createScorecardButton").focus();
</script>

jeg har også prøvet at placere et <body> tag inden for min ascx-side og give min kontrol name="createScorecardButton":

<body onload="formfocus()">
    <script language="JavaScript" type="text/javascript">
    function formfocus()
    {
    document.form.createScorecardButton.focus();
    }
    </script>
....
</body>

Der er intet af de to ting, der virker. Tværtimod får jeg en debug-besked. Hvordan sætter jeg fokus på min button-kontrol i min ascx-side?
Avatar billede guidmaster Nybegynder
17. november 2004 - 01:50 #1
Tag og kigge på denne metode http://www.stronglytyped.com/archives/2003/05/15/aspnet-set-focus-by-scott-guthrie/ - som du så selvfølgelig kan genbruge ved evt. at lægge ind i din egen basecontrol som du så kan nedarve fra. På den måde vil du på alle dine user kontroller kunne sætte fokus ;)
Avatar billede guidmaster Nybegynder
17. november 2004 - 23:32 #2
Var det noget du kunne bruge ?
Avatar billede agertoft Nybegynder
18. november 2004 - 00:38 #3
Jeg har prøvet at oversætte det til C# og smide det som en funktion ind i min codebehind-fil, men jeg kan ikke lige gennemskue denne linje:

RegisterStartupScript("focus", scriptFunction.ToString())

kan du prøve at forklare den nærmere?
Avatar billede guidmaster Nybegynder
18. november 2004 - 00:43 #4
Det er en metode der ligger på Page objektet. Metoden svare til at du lave et javascript i din body onload som hedder focus.

Skal du have hjælp med C# koden ?
Avatar billede agertoft Nybegynder
18. november 2004 - 16:37 #5
Jeg har oversat koden til:

public void SetFocus(WebControl controlToFocus)
{
    StringBuilder scriptFunction = new StringBuilder();
    string scriptClientId;

    scriptClientId = controlToFocus.ClientID;
    scriptFunction.Append("<script language=’javascript’>");

    scriptFunction.Append("document.getElementById(’");
    scriptFunction.Append(scriptClientId);
    scriptFunction.Append("‘).focus();");
    scriptFunction.Append("</script>");

    RegisterStartupScript("focus", scriptFunction.ToString());
}

I importeringen af namespaces har jeg endvidere brugt "using System.Text;". Men den brokker sig over RegisterStartupScript. Jeg kan godt se, hvad der sker forinden og også tyde JavaScriptet, men burde man ikke bare kunne kalde metoden uden den sidste linje?

Jeg er ihvertfald ikke helt med på, hvad den bliver brugt til og hvordan den skal kaldes.
Avatar billede guidmaster Nybegynder
19. november 2004 - 00:07 #6
RegisterStartupScript ligger på¨Page objektet. Har du adgang til dette der hvor du har implementeret koden.

Dokumentationen for RegisterStartupScript finder du på http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebUIPageClassRegisterStartupScriptTopic.asp

Hvis du ikke har kigget så meget på de metoder der ligger på Page objektet så skulle du næsten tage et kig forbi http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuipagememberstopic.asp og gå på opdagelse !
Avatar billede agertoft Nybegynder
19. november 2004 - 01:18 #7
Ahh.. nu er jeg med. Tak for hjælpen. Det virker nu :) Selvom det dog er en besværlig måde at skulle udføre sådan en forholdsvis enkel funktion på...?
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