按下Enter键时不会触发UpdatePanel

时间:2009-10-07 14:38:15

标签: asp.net

我有一个带有一些文本框和提交按钮的面板,以及一个设置为在按下按钮时触发的更新面板。

如果我按下按钮,它会正常工作。但是,如果我在控件上按Enter键,它会回发整个页面。

我将按钮设置为面板中的默认按钮,但它仍会回发整个页面。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

在面板上设置单个按钮作为默认设置总是有点棘手。对于这个问题,我在一个公共库中保留了一个方法:

public static void EnterOnKeyDown(WebControl targetControl, WebControl controlToPress)
{
    targetControl.Attributes.Add("onkeydown",
        "if(event.which || event.keyCode){if ((event.which == 13)" +
        "|| (event.keyCode == 13)) {document.getElementById('" +
        controlToPress.ClientID + "').click();return false;}} else {return true};");
}

您可以将此方法放在任何您喜欢的地方,并按以下方式调用它:

EnterOnKeyDown(someTextBoxInYourPanel, yourSubmitButton);

您可以轻松地使用上面的javascript,而无需在静态方法中设置它。

答案 1 :(得分:0)

在UpdatePanel属性中,设置以下内容:

ChildrenAsTriggers = True UpdateMode =始终

如果这样做,您不必指定何时触发更新面板,当您的任何控件导致回发时,它将自动触发。