首页  ·  知识 ·  云计算
asp.net设置默认按钮的一种方法
squirrel_sc  http://www.cnblogs.com/squirrel_sc/  综合  编辑:dezai  图片来源:网络
由于asp.net里面的button都是submit类型的,所以在表单内按回车都是触发的第一个按钮的click事件,如果有多个button则无法在回车的时候触发后面的按钮事件。

由于asp.net里面的button都是submit类型的,所以在表单内按回车都是触发的第一个按钮的click事件,如果有多个button则无法在回车的时候触发后面的按钮事件。以下方案可通过设置来改变页面的默认按钮。

1.在基页面内的load事件里加入supportDefaultButton()

2.基页面中声明变量:
Protected DefaultButton As Button

3.在基页面中加入函数supportDefaultButton并重载RaisePostBackEvent

    Private Sub supportDefaultButton()Sub supportDefaultButton()
        GetPostBackEventReference(New System.Web.UI.Control)
        RegisterStartupScript("DefaultButton", "")
    End Sub
 
    Protected Overloads Overrides Sub RaisePostBackEvent()Sub RaisePostBackEvent(ByVal sourceControl As System.Web.UI.IPostBackEventHandler, ByVal eventArgument As String)
        If (DefaultButton Is Nothing OrElse Request("__EVENTTARGET") <> "") Then
            MyBase.RaisePostBackEvent(sourceControl, eventArgument)
        ElseIf (Not DefaultButton Is Nothing) Then
            MyBase.RaisePostBackEvent(DirectCast(DefaultButton, System.Web.UI.IPostBackEventHandler), Nothing)
        End If
    End Sub
4.DefaultButton.js文件内容:
for(i=0;i{
    if(Form1.elements[i].type == "submit")
    {
        fstsubmit = Form1.elements[i]
        fstsubmit.attachEvent("onmouseup", changeEvent)
        //break; 这一句应该去掉
    }
}
function changeEvent()
{
    __doPostBack(event.srcElement.id, '')
}
在继承页面的load事件里:
5.DefaultButton = 需要设置为默认按钮的对象名称
即可。


IE6里面测试通过,低版本没有测试,但应该没问题。有兴趣的朋友可以帮忙测试一下兼容性,顺便告知。要是有更好的办法,也请给个链接看看。
Feedback
#1楼    回复  引用  查看    
2004-11-22 22:22 by 柚子Nan      
asp.net中确实有这个问题,非常的烦人,特别是页面上有很多文本框都绑定了回车事件以后,如果哪个文本框没有绑定就触发默认的按钮!

不过,从另外一个思路来看,找到默认按钮以后,把你的页面的所有验证逻辑都写到里面,这样不管在哪里敲回车都会去验证,你觉得呢?

 

 

个方法不错,只是怎么觉得前台的脚本不加也可阿

把我解决方案给大家看看
///


/// 设置在页面回车时触发事件的控件
///

/// 将触发事件的控件对象
public static void SetEnterControl(System.Web.UI.Control Ctrl)
{
Page mPage = Ctrl.Page;
string mScript;
mScript = @"";
if(!mPage.IsClientScriptBlockRegistered("SetEnterControl"))
mPage.RegisterClientScriptBlock("SetEnterControl",mScript);
}

本文作者:squirrel_sc 来源:http://www.cnblogs.com/squirrel_sc/
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读