我有一些从ASP.NET按钮继承并使用'onserverclick'的控件。
如果用户点击两次,该按钮将触发两个服务器端事件。我该如何防止这种情况?
我尝试通过javascript点击(在'onclick'属性中)后设置“this.disabled ='true'”,但也阻止了第一次回发。
答案 0 :(得分:13)
请参阅此示例以禁用对回发的控制。它应该可以帮助你做你想要达到的目标。
http://encosia.com/2007/04/17/disable-a-button-control-during-postback/
答案 1 :(得分:2)
您不一定要在回发时显示禁用的按钮。你想确保他们不小心提交两次。因此,由于服务器端操作而禁用或隐藏按钮在游戏中已经太晚了。到目前为止,第二个请求已经开始了。您需要使用javascript或确保服务器端代码不会运行两次。
答案 2 :(得分:2)
如果在FormView-Template中有updatepanel和一个按钮,我使用以下方法:
<script type="text/javascript">
// Using that prm reference, hook _initializeRequest
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequestBuchung);
// Abfangen von Mehrfachklicks auf Buttons für asynchrone Postbacks im Updatepanel
function InitializeRequestBuchung(sender, args) {
var arrButtonIds = ["ButtonInsert", "ButtonUpdate"];
// Get a reference to the PageRequestManager.
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm.get_isInAsyncPostBack() & jQuery.inArray(args.get_postBackElement().id, arrButtonIds) > -1) {
args.set_cancel(true);
}
}
</script>
如果当前异步回发仍处于活动状态,则会取消以下回发。效果很好。
答案 3 :(得分:1)
其他人在几天前在这里说过这个,我同意 - 使用javascript来简单地隐藏按钮而不是禁用它;你可以在它的位置显示一个“微调器”图像,让用户知道发生了什么。
答案 4 :(得分:1)
我没有隐藏,而是使用javascript交换按钮。单击第一个按钮显示另一个灰色图像。
答案 5 :(得分:1)
将Button属性UseSubmitBehavior设置为false。然后创建一个禁用该按钮的OnClientClick函数。 它看起来像这样:
<script type="text/javascript">
function disableFunctn(button){
button.disabled = true;
}
</script>
<asp:Button ID="button1" UseSubmitBehavior="false" OnClientClick="disableFunctn(this);"/>
最快最便宜的方式:
<asp:Button ID="button1" UseSubmitBehavior="false" OnClientClick="this.disabled=true;"/>
答案 6 :(得分:0)
You can also try for example btnSave.Enable = false; when the button is hit and before the processing for the button is done in the Click Event routine. If you need it to be reset to allow it to be enabled have a separate button that resets the button for reuse.
Another method is to set the button with verification so that the user is asked if they want to Save, it should pop up both times.
Yet another method would be to flag the first occurrence then set a popup for the second to verify a second or subsequent usage.