【发布时间】:2011-04-19 04:38:57
【问题描述】:
我在一个页面上有多个带有各种 asp 按钮的更新面板。我想禁用导致更新面板中回发的按钮,直到它完成。
有没有办法避免为此使用第三方控件?通过 JQuery 或任何其他方法?
【问题讨论】:
-
你能提供你当前使用的代码吗?
标签: javascript asp.net jquery updatepanel
我在一个页面上有多个带有各种 asp 按钮的更新面板。我想禁用导致更新面板中回发的按钮,直到它完成。
有没有办法避免为此使用第三方控件?通过 JQuery 或任何其他方法?
【问题讨论】:
标签: javascript asp.net jquery updatepanel
您可以这样做:
cs
//in pageload
//the request is not in postback or async mode
bt1.OnClientClick = "this.disabled = true; " + ClientScript.GetPostBackEventReference(bt1, null) + ";");
注意:您可以将“this.disabled = true”替换为 js 函数,该函数可以更好地处理禁用按钮并可能显示友好消息。
或者这个:
http://msdn.microsoft.com/en-us/library/bb383989.aspx
js
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(CheckStatus);
function CheckStatus(sender, arg)
{
var postBackElement = arg.get_postBackElement();
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm.get_isInAsyncPostBack() && postBackElement.id == "btn1") {
arg.set_cancel(true);
//display friendly message, etc
}
}
注意:我对其进行了修改,以便检查按钮的 ID。替换“btn1”
祝你好运!
【讨论】:
您可以使用更新面板的启动和停止消息来禁用您的控件。 例如
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
function InitializeRequest(sender, args) {
document.getElementById("ButtonToDisable").disabled = true;
}
function EndRequest(sender, args) {
document.getElementById("ButtonToDisable").disabled = false;
}
</script>
【讨论】: