Avatar billede kak Nybegynder
21. maj 2006 - 11:03 Der er 9 kommentarer og
1 løsning

Alert via vb-sub

Jeg har forsøgt at bruge msgbox i en asp.net side, men fået en fejl, og efter at have søgt på emnet, har jeg også fundet ud af, at det ikke kan lade sig gøre.

Men hvordan kan jeg lave en sub, der kalder en javascript alert? Jeg vil meget gerne lave et kald til en sub, da jeg så kan styre generelle parametre ét sted. Jeg bruger denne her...

    Public Shared Sub myMsgBox(ByVal prompt As String)
        MsgBox(prompt, MsgBoxStyle.SystemModal, "My Title")
    End Sub

Den har jeg brugt, da det faktisk virker, når man åbner siderne direktre fra Visual Web Developer og jeg først opdagede at msgbox ikke virker, da jeg begyndte at teste direkte fra IE.
Avatar billede snepnet Nybegynder
21. maj 2006 - 11:08 #1
Du skal sørge for at der bliver sendt en clientside alert til browseren:
alert('blah');

Hvis det er noget der skal ske når brugeren loader siden, skal du sørge for at det bliver lagt ind i formload:

form1.Attributes.Add("onload","alert('blah));

Dvs. Du skal have adgang til din form derfra hvor du vil have scriptet lagt på, så du kan f.eks. overføre formen som parameter til metoden.

Mvh
Avatar billede kak Nybegynder
21. maj 2006 - 11:20 #2
Det skal ikke nødvendigvis ske, hver gang siden loades. Grunden til at jeg gerne vil styre det fra en vb-sub, er at jeg jo så kan kalde denne sub, præcis når jeg ønsker det. Kan det ikke lade sig gøre?
Avatar billede snepnet Nybegynder
21. maj 2006 - 12:41 #3
Selvfølgelig kan du kalde den når du vil, men du skal for øvrigt lægge det i load for din body istedet, hvilket medfører at du må sætte runat="server" på den:

<body id="body" runat="server">

og så body.Attributes.Add("onload","alert('blah');");

Du skal være opmærksom på, at den slags ændringer på kontroller persisteres i viewstate, hvorfor at du fra første gang du sætter attributten, vil få en alert-box hver gang, med mindre du eksplicite fjerner den igen, eller slår viewstate fra på den kontrol du lægger den på (din body i det her tilfælde). Såhh...

<body id="body" runat="server" enableViewState="false">

Og en sub et sted du kalder når du vil, som lægger attributten på - skulle kunne fikse det.

Mvh
Avatar billede kak Nybegynder
21. maj 2006 - 15:43 #4
Jeg er ikke helt med. Hvordan bliver dit eksempel til en sub jeg kan kalde med en vilkårlig tekst? Jeg vil jo gerne skifte teksten på min msgbox/alert, og ikke blot have en stadig tekst jeg kan kalde.
Avatar billede snepnet Nybegynder
21. maj 2006 - 16:38 #5
Det var hensigten at du skulle benytte det i den sub du allerede har, og du skifter bare min konstant ud med den parameter du har på din sub.
Mvh
Avatar billede snepnet Nybegynder
21. maj 2006 - 16:40 #6
Og - hvis din sub ikke ligger på en side/kontrol:

    Public Shared Sub myMsgBox(ByVal prompt As String, ByRef body As HtmlGenericControl)
        body.Attributes.Add("onload", "alert('" + prompt + "');")
    End Sub

Mvh
Avatar billede kak Nybegynder
21. maj 2006 - 17:42 #7
Ok, det forstår jeg, men jeg får en fejl, da jeg skal angive det andet parameter ved kald af myMsgBox. Jeg kan ikke finde frem til hvad det skal være?

Altså, f.eks.... myMsgBox("min tekst", andet parameter)
Avatar billede snepnet Nybegynder
21. maj 2006 - 20:53 #8
hvis du angiver din body til runat="server" som vist her:

<body id="body" runat="server" enableViewState="false">

kan du sende body som parameter til din sub

Mvh
Avatar billede kak Nybegynder
22. maj 2006 - 14:10 #9
Nu virker det helt perfekt! Tak for hjælpen, og opretter du et svar?
Avatar billede snepnet Nybegynder
22. maj 2006 - 14:26 #10
Jeps - det får du her :o)
Mvh
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