如何为同一个按钮运行客户端和服务器端代码?

时间:2009-12-15 20:00:40

标签: asp.net

在Asp.NET aspx页面中,有一个数据保存按钮,当用户点击此按钮时,我希望: 1.立即禁用此按钮 2.然后调用函数Save()后面的代码将数据保存回DB 3.然后再次启用此按钮。

我的所作所为:

  1. apsx中的JS函数:

    function DisableSave(){       saveButton = document.getElementById('<%= btnSave.ClientID%>');       saveButton.disabled = TRUE;       返回false;     }

  2. 按钮脚本:

    < --- asp:Button ID =“btnSave”OnCommand =“Button_Command”CommandName =“Save”runat =“server”  Text =“Save”OnClientClick =“javascript:DisableSave();”/>

  3. 在代码隐藏函数Save()(假设由CommandName调用)中,设置保存按钮启用。

  4. 但是当我运行代码时,只禁用保存按钮,没有发生代码隐藏调用。

    如何解决?

2 个答案:

答案 0 :(得分:3)

显然,某些浏览器(IE)在禁用按钮时不会处理按钮的提交操作。我在Firefox中尝试了这个并且它确实发布了回复,但是IE没有运气。一种解决方法虽然没有提供用户反馈,但却是OnClientClick="this.onclick= function() { return false; }"。这至少会阻止更多的回发事件发生。

编辑:onclick需要是一个函数而不是字符串。

答案 1 :(得分:2)

问题是在onclick事件中使用JavaScript禁用按钮会停止回发。

this CodeProject文章中说明了一个简单的解决方法。