自定義控件是ASP.NET中很重要的一部分,使用它可以提高程序代碼的重用性,即一個自定義控件在網頁、自定義控件或控件的內部都可以再次使用。本實例創建的復選框控件列CheckBoxColumn自定義控件也可以在網站的任何地方再次使用。
本實例介紹如何在ASP.NET中創建自定義控件、如何使用自定義控件,以及如何在自定義控件中定義公開屬性和方法的實現方法。
1.創建新ASP.NET應用程序
在Visual Studio .NET 2003集成開發環境中創建新的ASP.NET Web應用程序,命名為Example_12_5。
2.創建自定義控件CheckBoxColumn
在應用程序Example_12_5中添加文件CheckItem.cs和文件 CheckColumn.cs。其中第一個文件定義類CheckBoxItem實現CheckBox控件;第二個文件定義類CheckBoxColumn 實現DataGrid控件中的CheckBoxColumn列。類CheckBoxItem繼承於接口ITemplate,並在其中定義了標識控件名稱的屬性Name、標識控件數據域的屬性DataField、標識控件是否為只讀的屬性ReadOnly、標識控件是否提交回傳的屬性 AutoPostBack和綁定控件數據的事件BindData()、當控件的選擇項改變時觸發的事件OnCheckChanged等。類 CheckBoxItem的程序代碼如下:
internal class CheckBoxItem : ITemplate
{
// <summary>
// CheckBoxItem的構造函數
// </summary>
// <param name="editable">控件是否為可編輯</param>
public CheckBoxItem(bool editable,string Name)
{
name = Name;
readOnly = (editable==true)?false:true;
}
// <summary>
// 實例化CheckBox控件,並添加到容器中
// </summary>
// <param name="container">添加控件的容器</param>
void ITemplate.InstantiateIn(Control container)
{
//創建CheckBox控件
CheckBox box = new CheckBox();
//設置控件的屬性和事件
box.ID = name;
box.DataBinding += new EventHandler(this.BindData);
box.AutoPostBack = autoPostBack;
box.CheckedChanged += new EventHandler(this.OnCheckChanged);
container.Controls.Add(box);
}
// <summary>
//定義控件的事件CheckChanged
// </summary>
public event EventHandler CheckedChanged;