Avatar billede stoffer Nybegynder
16. april 2007 - 00:51 Der er 3 kommentarer og
1 løsning

LinkButton Custom Control

Hej jeg har lavet denne extension på en linkbutton. For at kunne lave popups nemt....

-----------------------------------------------
public class PopupLinkButton : LinkButton
    {
       

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            this.ClientScript();
           

           
        }

        [Bindable(true)]
        public string PopupURL
        {
            get
            {
                // default value
                if (ViewState["PopupURL"] == null)
                {
                    return string.Empty;
                }
                // cast viewstate and return
                else
                {
                    return (string)ViewState["PopupURL"];
                }

            }
            set
            {
                ViewState["PopupURL"] = value;
            }
        }




        [Bindable(true)]
        public string PopupName
        {
            get {            
                    // default value
                if (ViewState["PopupName"] == null)
                    {
                        return string.Empty;
                    }
                    // cast viewstate and return
                    else
                    {
                        return (string)ViewState["PopupName"];
                    }     
                                   
            }
            set
            {
                ViewState["PopupName"] = value;
            }
        }


        [Bindable(true)]
        public string PopupHeight
        {
            get {            
                    // default value
                if (ViewState["PopupHeight"] == null)
                    {
                        return "500";
                    }
                    // cast viewstate and return
                    else
                    {
                        return (string)ViewState["PopupHeight"];
                    }     
                                   
            }
            set
            {
                ViewState["PopupHeight"] = value;
            }
        }

        [Bindable(true)]
        public string PopupWidth
        {
            get {            
                    // default value
                if (ViewState["PopupWidth"] == null)
                    {
                        return "660";
                    }
                    // cast viewstate and return
                    else
                    {
                        return (string)ViewState["PopupWidth"];
                    }     
                                   
            }
            set
            {
                ViewState["PopupWidth"] = value;
            }
        }
   
        /// <summary>
        ///   
        /// function openWindow(Url, Name, Width, Height)
        /// { 
        /// var newWin = window.open(Url,Name,"width=" + Width + ",height=" + Height + ",toolbar=false,locationbar=false,directories=false,status=true,menubar=false,scrollbars=auto,resizable=true,copyhistory=false");       
        /// return;
        /// }
        ///
        /// </summary>
        ///

        private void ClientScript()
        {           
            StringBuilder sb = new StringBuilder();
            sb.Append("<script language=\"javascript\">\r");
            sb.Append("function openWindow(Url, Name, Width, Height)\r");
            sb.Append("{\r");
            sb.Append("var newWin = window.open(Url,Name,'width='+Width+',height='+Height+',toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1\');\r");
            sb.Append("return;\r");
            sb.Append("}\r");
            sb.Append("</script>\r");

            if (!Page.ClientScript.IsClientScriptBlockRegistered("openwindowFunction"))
            {
                this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "openwindowFunction", sb.ToString());
            }
        }

        [Bindable(true)]
        public override string OnClientClick
        {
           
            get
            {
                string popupCall = "openWindow('" + this.PopupURL + "','" + this.PopupName + "'," + this.PopupWidth + "," + this.PopupHeight + ");";

                return popupCall + base.OnClientClick;
            }
            set
            {
                string popupCall = "openWindow('" + this.PopupURL + "','" + this.PopupName + "'," + this.PopupWidth + "," + this.PopupHeight + ");";

                base.OnClientClick = popupCall + value;
            }
        }
   
    }
----------------------------------------

Mit problem er nu at hvis jeg bruger Eval i PopupUrl parser den det som tekst (det ser f.eks. sådan ud: <a onclick="openWindow('HandleOrder.aspx?OrderGUID=&lt;%#Eval(&quot;GUID&quot;) %>','HandleOrder',660,500);">Handle order</a>) . Hvordan kan det løses?
Avatar billede websam Nybegynder
16. april 2007 - 12:21 #1
Prøv engang at skifte dine " med ' ved din onclick så det bliver :

onclick='.....'

istedet for

onclick="....."

er dog ikke sikker på det er det ;o)
Avatar billede websam Nybegynder
16. april 2007 - 12:24 #2
Eller post evt. den kode hvor du benytter din button.
Avatar billede stoffer Nybegynder
16. april 2007 - 14:25 #3
Hej jeg tror ikke det er problemet... det ser således ud:

<cc1:PopupLinkButton PopupURL='Customer.aspx?CustomerID=<%#Eval("GUID") %>' ....

Den virker fint hvis jeg bare bruger en normal link button til at skrive det samme...
Avatar billede stoffer Nybegynder
27. juli 2007 - 16:55 #4
Lukket
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