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
    }
}