16,717
社区成员
发帖
与我相关
我的任务
分享using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using FSSoft.Common;
using System.Reflection;
namespace FSSoft.Web.Controls
{
/// <summary>
/// 按钮WEB控件。
/// </summary>
[DefaultProperty("CssClass"),
ToolboxData("<{0}:CButton runat=server></{0}:CButton>")]
public class CButton : System.Web.UI.WebControls.Button
{
private string css_class=consts_Web_Controls.CButton_CSS;
/// <summary>
/// 应用于该控件的Css类名。
/// </summary>
public override string CssClass
{
get
{
return css_class;
}
set
{
css_class = value;
}
}
private bool useSubmitBehavior = false;
/// <summary>
/// 获取或设置一个布尔值,该值指示 System.Web.UI.WebControls.Button 控件使用客户端浏览器的提交机制还是 ASP.NET回发机制。
/// </summary>
[Themeable(false)]
[DefaultValue(false)]
public override bool UseSubmitBehavior
{
get
{
return useSubmitBehavior;
}
set
{
useSubmitBehavior = value;
}
}
/// <summary>
/// 防止重复点击。
/// </summary>
[DefaultValue("{this.disabled=true;document.forms(0).submit();}")]
[Themeable(false)]
public string AfterOnClientClick
{
get
{
if (UseSubmitBehavior)
return string.Empty;
else
return "{this.disabled=true;document.forms(0).submit();}";
}
}
private ActionType actionType;
/// <summary>
/// 按钮事件类型。
/// </summary>
public ActionType ButtonActionType
{
set
{
actionType=value;
}
get
{
return actionType;
}
}
/// <summary>
/// 属性修改。
/// </summary>
/// <param name="e"></param>
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
base.CssClass=css_class;
base.UseSubmitBehavior = this.UseSubmitBehavior;
base.OnClientClick += this.AfterOnClientClick;
switch(actionType)
{
case ActionType.Reset:
base.Attributes.Add("onclick","ResetForm();");
break;
case ActionType.Return:
base.Attributes.Add("onclick","GoLastPage();");
break;
case ActionType.CloseThis:
base.Attributes.Add("onclick","window.opener=null;window.close();");
break;
}
}
}
}