之前也经常遇到这种问题。但是没有去刻意研究并解决。也知道有很多解决方案。但是都没有去亲自实现。直到现在工作中出现这个棘手问题,才去寻找各种解决方案并研究。
还好网上有很多前辈的经验。现在问题算是解决了。因此做个笔记以防后面还会遇到此种问题。虽然这个解决方法不一定很好,但是还是可以实现的。
点击一个按钮,只让此按钮的事件执行一次,防止用户多次点击,造成多次提交数据。因为此事件的方法执行需要一段时间,如果多次点击会出现连接超时的情况。我的解决方案是点击之后禁用这个按钮,执行完方法后启用。本以为直接设置Enabled就行了,但是这样设置后,事件直接不会执行。因为是服务器空间。其实用js也可以控制。所以现在解决如下。
protected void Page_Load(object sender, EventArgs e)
{
this.report_output.Attributes["onclick"] = this.GetPostBackEventReference(this.report_output) + ";this.disabled=true;";
this.data_output.Attributes["onclick"] = this.GetPostBackEventReference(this.data_output) + ";this.disabled=true;";
this.message.Text = "";
}
在事件方法执行后,执行以下代码
this.report_output.Style.Remove("disabled");
this.data_output.Style.Remove("disabled");