Avatar billede badal Nybegynder
10. juni 2005 - 09:37 Der er 15 kommentarer og
1 løsning

Problem med usercontrol

Jeg har et problem med usercontrol i et aspx side. I usercontrollen har jeg et søge felt og en submit knap. På Aspx siden har jeg nogen andre indtastningsfelter og knap.  Problemet er at når jeg i søgefeltet har skrevet noget og trykker enter så er det knappen på aspx som bliver "aktiveret". den forkerte knap får fokus.
jeg har læst frem og tilbage på nettet men har ikke fundet en brugbart løsning.
Udfra hvad jeghar forstår det skyldes det at der er en form element per side. Og alle buttons og tekstfelter bliver "grouperet".

Men jeg vil da tro at der er andre der har oplevet problemet og fundet en løsning? Ellers kan man jo ikke bruge usercontroller hvis der er på aspx siden også er tekstfelter og buttons.
Avatar billede snepnet Nybegynder
10. juni 2005 - 09:50 #1
hej badal :o)

hvis du vil have lidt styring ind omkring den slags bliver du nødt til at gøre det med lidt clientscripting.... tag et kig på denne f.eks.

http://codebetter.com/blogs/darrell.norton/archive/2004/03/03/8374.aspx

http://weblogs.asp.net/rajbk/archive/2003/12/11/43023.aspx

og sidst, men bestemt ikke mindst :

http://www.metabuilders.com/Tools/DefaultButtons.aspx

den sidste er en ganske fiks og færdig løsning.

mvh
Avatar billede burningice Nybegynder
10. juni 2005 - 10:39 #2
Jeg er nu mere til dette script, da det ikke indebærer at man skal ændre i hele sin kontrolstruktur:

/// <summary>
        /// Sets default buttons
        /// </summary>
        /// <param name="textBox">Which textbox?</param>
        /// <param name="button">The button</param>
        protected void DefaultButton(TextBox textBox, Button button)
        {
            //Sets default buttons.
            //Created by Janus Kamp Hansen - http://www.kamp-hansen.dk
            StringBuilder sScript = new StringBuilder();

            sScript.Append("<SCRIPT language=\"javascript\"> \n");
            sScript.Append("function fnTrapKD(btn){ \n");
            sScript.Append(" if (document.all){ \n");
            sScript.Append("  if (event.keyCode == 13) \n");
            sScript.Append("  { \n");
            sScript.Append("    event.returnValue=false; \n");
            sScript.Append("    event.cancel = true; \n");
            sScript.Append("    btn.click(); \n");
            sScript.Append("  } \n");
            sScript.Append(" } \n");
            sScript.Append("} \n");
            sScript.Append("</SCRIPT> \n");

            textBox.Attributes.Add("onkeydown", "fnTrapKD(document.all." + button.ClientID + ")");
            this.RegisterStartupScript("ForceDefaultToScript", sScript.ToString());
        }
Avatar billede burningice Nybegynder
10. juni 2005 - 10:41 #3
det kalder man så bare inden at siden renderes, evt. i OnLoad på denne måde

DefaultButton(minTxtBoxSomKnappenSkalKnyttesTil, knappenSomSkalTrykkesPåVedTrykPåEnter);
Avatar billede snepnet Nybegynder
10. juni 2005 - 11:01 #4
muntert der ice - tag et kig på det første link ;o)

// Sets default buttons.
// Originally created by Janus Kamp Hansen - http://www.kamp-hansen.dk
// Extended by Darrell Norton - http://dotnetjunkies.com/weblog/darrell.norton/
//  -- added Mozilla support, fixed a few issues, improved performance

vi ender med at give ham Janus rigtig mange hits på google ;o)

mvh
Avatar billede badal Nybegynder
10. juni 2005 - 13:18 #5
hej snepnet & burningice
Jeg syntes at det ser godt med de her eksempler. Jeg kigger på her i weeneden og vender tilbage
Avatar billede burningice Nybegynder
10. juni 2005 - 20:26 #6
ja, okay... må nok krybe til korset og erkende at jeg ikke lige fik tjekke alle dine links igennem. Gik ud fra at de to første blogs kun ondeholdt en forklaring af problemstillingen, og ikke noget konkret kode.

Men du har ret, tror at Janus's lille script er i brug rigtig rigtig mange steder på nettet.
Avatar billede badal Nybegynder
17. juni 2005 - 10:12 #7
hejsa
jeg kunne godt bruge den første link den af darrel norton. Det løser problemet fint. det må være snepnet der skal have pointene siden du kom med den link først ??+
Avatar billede badal Nybegynder
28. juni 2005 - 10:08 #8
hej igen
jeg har fået et uventet problemet. Darrel nortons script virker til almindelig knapper men giver problemer når jeg bruger image button ??+ Er der nogen der ved hvordan jeg løse det ??+
Avatar billede burningice Nybegynder
28. juni 2005 - 15:10 #9
hvilke problemer?
Avatar billede badal Nybegynder
28. juni 2005 - 18:08 #10
hej burning ice .. problemet var at image knappen ikke få fokus når man bruger darrel nortons scripts. Den skal omskrive en smule. Jeg har fået det til virke ved at tilføje denne kode til textboxen som er knyttet til imagebuton:

onKeyPress="if(event.keyCode==13) {document.getElementById('ImageButton1').click(); return false}

Men den virker indtil videre kun i explorer så jeg prøver at videreudvikle den.

Og du skal huske at lægge et svar så du kan får point
Avatar billede burningice Nybegynder
28. juni 2005 - 18:15 #11
jeg forstår ikke... hvis du laver en funktion som tager en control som input, så er der ikke brug for document.getElementById, og koden burde virke i alle browsere.
Avatar billede badal Nybegynder
28. juni 2005 - 18:23 #12
private void Page_Load(object sender, System.EventArgs e)
        {
           
            SetDefaultButton1(Page, TextBox1, Button1);
            SetDefaultButton1(Page, TextBox3, Button2);
            SetDefaultButton1(Page, TextBox2, ImageButton1);
        }

        public void SetDefaultButton1(Page page, TextBox textControl, WebControl defaultButton)
        {
            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)");
        }

private void Button1_Click(object sender, System.EventArgs e)
        {
            Response.Write("Button");
        }

        private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {
            Response.Write("Image Button");
        }
private void Button2_Click(object sender, System.EventArgs e)
        {
        Response.Write("Button2");}


////////////////////////////////////////////////////////////////////


<table>
    <tr>
        <td>
        <asp:textbox id="TextBox1" runat="server"></asp:textbox><asp:button id="Button1"  runat="server" text="Button"></asp:button>
        </td>
    </tr>
    <tr>
        <td>
        <asp:textbox id="TextBox2" runat="server"></asp:textbox><asp:imagebutton id="ImageButton1" runat="server"></asp:imagebutton>
        </td>
    </tr>
    <tr>
        <td>
        <asp:textbox id="TextBox3" runat="server"></asp:textbox><asp:button id="Button2" runat="server" text="Button"></asp:button>
        </td>
    </tr>
</table>
Avatar billede badal Nybegynder
28. juni 2005 - 18:23 #13
Jeg benytter ovenstående kode men den reager fint nok på almindlige knapper men den virker ikke med imagebutton
Avatar billede badal Nybegynder
28. juni 2005 - 18:28 #14
Og jeg kan se at den giver fejlmeddelse om at 'ImageButton is undefined'. Og når jeg kigger i koden(html output) så kan jeg se at den har lavet asp:button af typen submit, mens asp:imagebutton af typen image. Kan det være det som er fejlen? at i vores javascript kode der tager den en button som input??
Avatar billede badal Nybegynder
14. juli 2005 - 22:26 #15
har fået d til at virke...
Avatar billede snepnet Nybegynder
14. juli 2005 - 22:33 #16
et svar som aftalt her : http://www.eksperten.dk/spm/632449
mvh :o)
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