源码:
using System;
using System.Web.UI.WebControls;
namespace HMG.WebControls
{
/// <summary>
/// 提交成功后执行关闭还是重定位到本页面
/// </summary>
public enum SubmitStyle
{
/// <summary>
/// 重定位
/// </summary>
Redirect,
/// <summary>
/// 关闭
/// </summary>
Close
}
/// <summary>
/// SubmitOnceButton 的摘要说明。
/// </summary>
public class SubmitOnceButton:System.Web.UI.WebControls.Button
{
/// <summary>
/// 默认的构造函数,当没有构造函数的时候不会执行
/// </summary>
public SubmitOnceButton():base()
{
}
/// <summary>
/// 执行成功后重定位的Url
/// </summary>
public string Url
{
get
{
if(ViewState["url"]==null)
{
ViewState["url"]=string.Empty;
}
return ViewState["url"].ToString();
}
set
{
ViewState["url"]=value;
}
}
/// <summary>
/// 执行时候显示的临时文本
/// </summary>
public string TempText
{
get
{
if(ViewState["temptext"]==null)
{
ViewState["temptext"]="请稍候
";
}
return ViewState["temptext"].ToString();
}
set
{
ViewState["temptext"]=value;
}
}
/// <summary>
/// 执行成功后关闭本页面还是重定位 使用的样式
/// </summary>
private SubmitStyle hint=SubmitStyle.Redirect;
/// <summary>
/// 执行成功后关闭本页面还是重定位
/// </summary>
public SubmitStyle SubmitSuccessStyle
{
get
{
return this.hint;
}
set
{
this.hint=value;
}
}
private string GetScriptBlock()
{
const string FormatStr="javascript:this.value='{0}';setTimeout(function Test(){{this.disabled=true;}},0);";
string temp=string.Empty;
return string.Format(FormatStr,new object[]{this.TempText})+temp;
}
/// <summary>
/// 执行成功后重新定位
/// </summary>
/// <param name="msg">成功后的提示信息</param>
public void SubmitSuccess(string msg)
{
if(this.Url==string.Empty)
{
this.Url=this.Page.Request.UrlReferrer.ToString();
}
if(this.SubmitSuccessStyle==SubmitStyle.Redirect)
{
this.Page.RegisterStartupScript(this.ClientID,"<script>alert('"+msg+"');window.location.href='"+this.Url+"';history.go(1);</script>");
}
else
{
this.Page.RegisterStartupScript(this.ClientID,"<script>alert('"+msg+"');window.opener=null;window.close();</script>");
}
}
/// <summary>
/// 给加客户端提示信息
/// </summary>
/// <param name="writer">输出流</param>
protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
{
this.Attributes.Add("onclick",this.GetScriptBlock());
base.AddAttributesToRender (writer);
}

}
}
使用时候的单击事件
private void SubmitOnceButton1_Click(object sender, System.EventArgs e)
{
System.Threading.Thread.Sleep(500);
this.TextBox1.Text="username";
System.Diagnostics.Debug.WriteLine("excute submitonce!");
this.SubmitOnceButton1.SubmitSuccess("提交成功!");//提交成功的时候执行这个方法即可
}

浙公网安备 33010602011771号