Avatar billede the_party_dog Nybegynder
18. juni 2004 - 10:13 Der er 6 kommentarer og
1 løsning

js fil & C#

Jeg har dette javascript liggende på alle mine sidder, og nu vil jeg gerne have lagt det over i en fil, som alle mine sidder bare kan bruge af.

public void SetDefaultButton(Page page, TextBox textControl, Button defaultButton)
        {
// Sets default buttons.
            // Originally created by Janus Kamp Hansen -
            // http://www.kamp-hansen.dk/pages/showdoc.asp?id=28&menuid=21&menuid=20
            // Extended by Darrell Norton - http://dotnetjunkies.com/weblog/darrell.norton/ -
            // http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/03/03/8374.aspx
            //  -- added Mozilla support, fixed a few issues, improved performance
            //        <!--
            string theScript = @"

<SCRIPT language=""javascript"">

       

                function fnTrapKD(btn, event)
                {

                    if (document.all)
                    {
                        if (event.keyCode == 13)
                        {
                            event.returnValue=false;
                            event.cancel = true;
                            btn.click();
                        }
                    }
                    else if (document.getElementById)
                    {
                        if (event.which == 13)
                        {
                            event.returnValue=false;
                            event.cancel = true;
                            btn.click();
                        }
                    }
                    else if(document.layers)
                    {
                        if(event.which == 13)
                        {
                            event.returnValue=false;
                            event.cancel = true;
                            btn.click();
                        }
                    }
                }
</SCRIPT>";

            Page.RegisterStartupScript("ForceDefaultToScript", theScript);
       
            textControl.Attributes.Add("onkeydown", "fnTrapKD(" + defaultButton.ClientID + ",event)");}

Det koden gør, at man kalder funktionen på siden, og definere hvilken side man snakker om, hvilken textbox, og hvilken knap. Så når brugeren trykker enter når han skriver i en textbox, vil scriptet reagere på det, og trykke på den ønskede knap.

Det vil jeg gerne have lagt over i en fil, enten en js fil, eller bare en class fil. Jeg ved intet om det, så jeg vil meget gerne have lidt vejledning med opgaven.
Avatar billede guidmaster Nybegynder
18. juni 2004 - 16:59 #1
Ja den hurtige metode ville jo være at lave din egen BasePage - altså en klasse der nedarver fra Page. I denne klasse smider du så denne funktion ind og så fortæller du dine aspx sider at de skal nedarve fra din nye BsePage istedet for Page.
Avatar billede the_party_dog Nybegynder
21. juni 2004 - 08:29 #2
Kan du komme med et lille opstillet eksempel eller noget? Er lidt på MEGET bar bund lige på det område....
Avatar billede guidmaster Nybegynder
21. juni 2004 - 11:36 #3
Det kan jeg da godt:
Du laver en klasse - lad os kalde den BasePage. Den vil se ud som følgende:
Basepage.cs

    public class BasePage: Page
    {
        public BasePage()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        public void SetDefaultButton(Page page, TextBox textControl, Button defaultButton)
        {
            // Sets default buttons.
            // Originally created by Janus Kamp Hansen -
            // http://www.kamp-hansen.dk/pages/showdoc.asp?id=28&menuid=21&menuid=20
            // Extended by Darrell Norton - http://dotnetjunkies.com/weblog/darrell.norton/ -
            // http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/03/03/8374.aspx
            //  -- added Mozilla support, fixed a few issues, improved performance
            //        <!--
            string theScript = @"
<SCRIPT language=""javascript"">

       

                function fnTrapKD(btn, event)
                {

                    if (document.all)
                    {
                        if (event.keyCode == 13)
                        {
                            event.returnValue=false;
                            event.cancel = true;
                            btn.click();
                        }
                    }
                    else if (document.getElementById)
                    {
                        if (event.which == 13)
                        {
                            event.returnValue=false;
                            event.cancel = true;
                            btn.click();
                        }
                    }
                    else if(document.layers)
                    {
                        if(event.which == 13)
                        {
                            event.returnValue=false;
                            event.cancel = true;
                            btn.click();
                        }
                    }
                }
</SCRIPT>";

            Page.RegisterStartupScript("ForceDefaultToScript", theScript);
       
            textControl.Attributes.Add("onkeydown", "fnTrapKD(" + defaultButton.ClientID + ",event)");}

    }

Dine websider nedarver så fra denne BasePage. Her er et eks.
/// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    public class WebForm1 : BasePage
    {
        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            this.SetDefaultButton(this,textbox1,okButton);
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }
        #endregion
    }
Avatar billede the_party_dog Nybegynder
21. juni 2004 - 12:16 #4
Når jeg gemmer det kode som du siger jeg skal smide ind i min class fil, får jeg en fejl i min tasklist:

"The type or namespace name 'Page' could not be found (are you missing a using directive or an assembly reference?)"

Den fejl er både ved "Public Class BasePage: Page" & "public void SetDefaultButton(Page page, TextBox textControl, Button defaultButton)"

Kan du hjælpe mig videre?
Avatar billede guidmaster Nybegynder
21. juni 2004 - 12:25 #5
Hvis din klasse ligger i et projekt der ikke har en referrence til System.web skal du lige have sat sådan en.
Ellers skal du lige have disse 2 med i din klasse:
using System.Web.UI;
using System.Web.UI.WebControls;
Avatar billede the_party_dog Nybegynder
21. juni 2004 - 12:30 #6
PERFEKT! Du har ærligt fortjent de 200 points, du får den dybeste tak fra min side af...
Avatar billede guidmaster Nybegynder
21. juni 2004 - 12:50 #7
Jeg er da glad for at kunne hjælpe :)
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