Asp.net回车默认按钮事件解决方案

来源:互联网 发布:刚开的淘宝店怎么经营 编辑:程序博客网 时间:2024/05/01 07:50

一、Js设置默认按钮

        functiondocument.onkeydown()

        {

            vare=event.srcElement;

            if(event.keyCode==13)

            {

               document.getElementById("btnSearch").focus();

                return true;

            }

}

二、Form标签中设置defaultbutton属性

  <formid="form1"runat="server" defaultbutton="默认按钮ID">

三、DefaultButton.js文件内容

           for(i=0;i<Form1.elements.length;i++)

          {

            if(Form1.elements[i].type== "submit")

            {

              fstsubmit =Form1.elements[i]

              fstsubmit.attachEvent("onmouseup", changeEvent)

              //break; 这一句应该去掉

            }

          }

        functionchangeEvent()

         {

             __doPostBack(event.srcElement.id, '')

    }

四、控件方法

自己写一个控件继承 TextBox,增加一个 SubmitControl 属性用来指定此文本框上按回车时由哪个按钮来响应。再做一个Converter 增加设计时支持,就是在设计时可以用下拉框选择提交按钮。 目前只考虑了buttonLinkButtonImageButton作为提交按钮,当然继承它们的控件也可以。

ufoTextBox 控件:

public class ufoTextBox : TextBox

        {

            [TypeConverter(typeof(SubmitableControlConvertor)), DefaultValue(""), Category("Behavior")]

            publicstring SubmitControl

            {

                get

                {

                    object ret = this.ViewState["SubmitControl"];

                    if (ret != null)

                    {

                        return (string)ret;

                    }

                    return string.Empty;

                }

                set

                {

                    this.ViewState["SubmitControl"]= value;

                }

            }

                 protectedoverride voidAddAttributesToRender(HtmlTextWriter writer)

            {

                base.AddAttributesToRender(writer);

                if (this.SubmitControl.Length> 0)

                {

                    Control con = FindControl(SubmitControl);

                    if (con != null)

                    {

                        string script = "if(event.keyCode== 13){document.getElementById('" + con.ClientID + "').click();event.returnValue=false;}";

                       writer.AddAttribute("onkeydown",script);

                    }

                }

 

            }

}

 

 

 

SubmitableControlConvertor

public class SubmitableControlConvertor : StringConverter

    {

        privateobject[] GetControls(IContainercontainer)

        {

            ComponentCollectioncomponents = container.Components;

            ArrayListret = new ArrayList();

            foreach(IComponent control incomponents)

            {

                if (!(control is Button || control isLinkButton || control is ImageButton))

                {

                    continue;

                }

                Control button = (Control)control;

                if ((button.ID != null)&& (button.ID.Length != 0))

                {

                    ret.Add(string.Copy(button.ID));

                }

            }

            ret.Sort(Comparer.Default);

            returnret.ToArray();

        }

        publicoverride System.ComponentModel.TypeConverter.StandardValuesCollectionGetStandardValues(ITypeDescriptorContextcontext)

        {

            if((context != null) &&(context.Container != null))

            {

                object[] controls = this.GetControls(context.Container);

                if (controls != null)

                {

                    return new TypeConverter.StandardValuesCollection(controls);

                }

            }

            returnnull;

        }

        publicoverride boolGetStandardValuesExclusive(ITypeDescriptorContextcontext)

        {

            returnfalse;

        }

        publicoverride boolGetStandardValuesSupported(ITypeDescriptorContextcontext)

        {

            returntrue;

        }

}

 

原创粉丝点击