代码如下[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public String ButtonControlID
{
get
{
String s = (String)ViewState["ButtonControlID"];
return ((s == null) ? String.Empty : s);
} set
{
ViewState["ButtonControlID"] = value;
}
}
protected virtual Button GetButton()
{
if (string.IsNullOrEmpty(this.ButtonControlID))
throw new HttpException("缺少ButtonControlID属性!"); Button btn=this.FindControl(this.ButtonControlID) as Button; if (btn==null)
throw new HttpException ("缺少控制控件!");
return btn;
} protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e); if (this.Enabled)
{
Button btn = GetButton();
btn.Click+=new System.EventHandler(btn_Click); }
}
public void btn_Click(object sender, EventArgs e)
{
}
这么做是否可以???或者按此思路是否可行???
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public String ButtonControlID
{
get
{
String s = (String)ViewState["ButtonControlID"];
return ((s == null) ? String.Empty : s);
} set
{
ViewState["ButtonControlID"] = value;
}
}
protected virtual Button GetButton()
{
if (string.IsNullOrEmpty(this.ButtonControlID))
throw new HttpException("缺少ButtonControlID属性!"); Button btn=this.FindControl(this.ButtonControlID) as Button; if (btn==null)
throw new HttpException ("缺少控制控件!");
return btn;
} protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e); if (this.Enabled)
{
Button btn = GetButton();
btn.Click+=new System.EventHandler(btn_Click); }
}
public void btn_Click(object sender, EventArgs e)
{
}
这么做是否可以???或者按此思路是否可行???
应该继承WebControl, INamingContainer
然后重写CreateChildControls(),在里面生成控件,
比如: #region 生成控件
protected override void CreateChildControls()
{
this.Controls.Clear();
_btnChangePage = new Button();
_btnChangePage.ID = "btnChangePage";
_btnChangePage.Click += new EventHandler(BtnChangePage_Click);
_lblCurrentPage = new Label();
_lblCurrentPage.ID = "lblCurrentPage";
_lblPageCount = new Label();
_lblPageCount.ID = "lblPageCount";
_lblRecodeCount = new Label();
_lblRecodeCount.ID = "lblRecodeCount";
_lnkbtnFrist = new LinkButton();
_lnkbtnFrist.ID = "lnkbtnFrist";
_lnkbtnFrist.Click += new EventHandler(lnkbtnFrist_Click);
_lnkbtnLast = new LinkButton();
_lnkbtnLast.ID = "lnkbtnLast";
_lnkbtnLast.Click += new EventHandler(lnkbtnLast_Click);
_lnkbtnNext = new LinkButton();
_lnkbtnNext.ID = "lnkbtnNext";
_lnkbtnNext.Click += new EventHandler(lnkbtnNext_Click);
_lnkbtnPre = new LinkButton();
_lnkbtnPre.ID = "lnkbtnPre";
_lnkbtnPre.Click += new EventHandler(lnkbtnPre_Click);
_page_0 = new LinkButton();
_page_0.ID = "_page_0";
_page_0.Click += new EventHandler(CurrentPage_Click);
_page_1 = new LinkButton();
_page_1.ID = "_page_1";
_page_1.Click += new EventHandler(CurrentPage_Click);
_page_2 = new LinkButton();
_page_2.ID = "_page_2";
_page_2.Click += new EventHandler(CurrentPage_Click);
_page_3 = new LinkButton();
_page_3.ID = "_page_3";
_page_3.Click += new EventHandler(CurrentPage_Click);
_page_4 = new LinkButton();
_page_4.ID = "_page_4";
_page_4.Click += new EventHandler(CurrentPage_Click);
_page_5 = new LinkButton();
_page_5.ID = "_page_5";
_page_5.Click += new EventHandler(CurrentPage_Click);
_page_6 = new LinkButton();
_page_6.ID = "_page_6";
_page_6.Click += new EventHandler(CurrentPage_Click);
_page_7 = new LinkButton();
_page_7.ID = "_page_7";
_page_7.Click += new EventHandler(CurrentPage_Click);
_page_8 = new LinkButton();
_page_8.ID = "_page_8";
_page_8.Click += new EventHandler(CurrentPage_Click);
_page_9 = new LinkButton();
_page_9.ID = "_page_9";
_page_9.Click += new EventHandler(CurrentPage_Click);
_txtPageIndex = new TextBox();
_txtPageIndex.ID = "txtPageIndex";
_lblPageSize = new Label();
_lblPageSize.ID = "lblPageSize";
this.Controls.Add(_page_0);
this.Controls.Add(_page_1);
this.Controls.Add(_page_2);
this.Controls.Add(_page_3);
this.Controls.Add(_page_4);
this.Controls.Add(_page_5);
this.Controls.Add(_page_6);
this.Controls.Add(_page_7);
this.Controls.Add(_page_8);
this.Controls.Add(_page_9);
this.Controls.Add(_btnChangePage);
this.Controls.Add(_lblCurrentPage);
this.Controls.Add(_lblPageCount);
this.Controls.Add(_lblRecodeCount);
this.Controls.Add(_lnkbtnFrist);
this.Controls.Add(_lnkbtnLast);
this.Controls.Add(_lnkbtnNext);
this.Controls.Add(_lnkbtnPre);
this.Controls.Add(_txtPageIndex);
base.CreateChildControls();
ChildControlsCreated = true; //指示控件已经生成,避免多次重复生成控件
}
#endregion
则需要判断是否已经生成该控件,比如:
[Category("Appearance"), Description("设置跳转按钮的文本"),
DefaultValue(":"), Bindable(true)]
public virtual string ButtonText
{
get
{
EnsureChildControls();//判断控件是否已经生成,如果未生成,则调用CreateChildControls生成控件再使用
return _btnChangePage.Text.Trim() != "" ? _btnChangePage.Text.Trim() : "GO";
}
set
{
EnsureChildControls();
_btnChangePage.Text = value;
}
}