using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;namespace cjl.Web.Controls
{
[Designer(typeof(MyDesigner))]
[DefaultProperty("Text")]
[ToolboxData("<{0}:ConfirmButton runat=\"server\" Text=\"\" />")]
public class ConfirmButton : Button
{
[DefaultValue(null)]
public string ConfirmMessage
{
get
{
return WebUtil.GetViewState<string>("ConfirmMessage",
null, ViewState);
}
set
{
ViewState["ConfirmMessage"] = value;
}
} protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e); if (string.IsNullOrEmpty(OnClientClick))
{
string msg;
if (string.IsNullOrEmpty(ConfirmMessage))
{
msg = "你确认吗?";
}
else
{
msg = ConfirmMessage.Replace("'", @"\'");
}
OnClientClick = string.Format("return confirm('{0}')", msg);
}
else
{
if (OnClientClick.StartsWith("return") == false)
{
OnClientClick = "return " + OnClientClick;
}
}
}
#region designer
class MyDesigner : System.Web.UI.Design.WebControls.ButtonDesigner
{
ConfirmButton _button;
public override void Initialize(IComponent component)
{ base.Initialize(component);
_button = component as ConfirmButton;
//这里想在VS工具箱中插入控件时,会设置Text属性。
//但是是VS2010实际上是在设计界面能看到设置的Text属性,
//在属性设置中也可以看得到设置的Text属性,
//但是切换到源界面就没有生成相应的代码 Text="设置的ID"。为什么?
//原来是想这样的 (<cjl:ConfirmButton runat="server" Text="ConfirmButton1" />
//可VS把Text="ConfirmButton1"这个给忽略了
_button.Text = _button.ID;
} }
#endregion
}
}
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;namespace cjl.Web.Controls
{
[Designer(typeof(MyDesigner))]
[DefaultProperty("Text")]
[ToolboxData("<{0}:ConfirmButton runat=\"server\" Text=\"\" />")]
public class ConfirmButton : Button
{
[DefaultValue(null)]
public string ConfirmMessage
{
get
{
return WebUtil.GetViewState<string>("ConfirmMessage",
null, ViewState);
}
set
{
ViewState["ConfirmMessage"] = value;
}
} protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e); if (string.IsNullOrEmpty(OnClientClick))
{
string msg;
if (string.IsNullOrEmpty(ConfirmMessage))
{
msg = "你确认吗?";
}
else
{
msg = ConfirmMessage.Replace("'", @"\'");
}
OnClientClick = string.Format("return confirm('{0}')", msg);
}
else
{
if (OnClientClick.StartsWith("return") == false)
{
OnClientClick = "return " + OnClientClick;
}
}
}
#region designer
class MyDesigner : System.Web.UI.Design.WebControls.ButtonDesigner
{
ConfirmButton _button;
public override void Initialize(IComponent component)
{ base.Initialize(component);
_button = component as ConfirmButton;
//这里想在VS工具箱中插入控件时,会设置Text属性。
//但是是VS2010实际上是在设计界面能看到设置的Text属性,
//在属性设置中也可以看得到设置的Text属性,
//但是切换到源界面就没有生成相应的代码 Text="设置的ID"。为什么?
//原来是想这样的 (<cjl:ConfirmButton runat="server" Text="ConfirmButton1" />
//可VS把Text="ConfirmButton1"这个给忽略了
_button.Text = _button.ID;
} }
#endregion
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货