我有一个带有一些文本框和提交按钮的面板,以及一个设置为在按下按钮时触发的更新面板。
如果我按下按钮,它会正常工作。但是,如果我在控件上按Enter键,它会回发整个页面。
我将按钮设置为面板中的默认按钮,但它仍会回发整个页面。有什么想法吗?
答案 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 =始终
如果这样做,您不必指定何时触发更新面板,当您的任何控件导致回发时,它将自动触发。