程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET服務器控件開發簡介:ComboBox

ASP.NET服務器控件開發簡介:ComboBox

編輯:關於ASP.NET

我在Web項目的開發過程中很多時候都要用到ComboBox,找了很多類似的控件來用發現都不盡如人意,我所希望的能夠在WEB上使用的ComboBox應該就是在DropDownList的功能上加入了文本輸入功能,我個人比較看重的一點就是下拉列表應該可以伸展到浏覽器之外,然而目前大多數的ComboBox要麼是用DIV來顯示選擇項,要麼就是用TextBox+ListBox,DIV的方式會不能伸展到浏覽器之外,而TextBox+ListBox方式ListBox占用頁面空間。後來發現了A DHTML combo box , 於是決定基於此HTC開發一個ASP.NET服務器控件.

關鍵類設計

ComboBox : 關鍵是有一個Text屬性獲取控件值,沒有SelectedIndexChanged事件(我覺得該事件對ComboBox來說不是很重要,當然你也可以根據你自己的需要增加對此事件的支持),Items屬性當然是必不可少的;

ComboItem : 相對於ListItem來說我沒有設計Value屬性;

ComboItemCollection : 這是ComboItem的集合類,實現了ICollection接口,其功能類似ListItemCollection。

實現ViewState

實現ViewState是我個人覺得最有趣的部分,根據類的層次結構,先看看ComboItem如何實現ViewState,其實很簡單,就是實現System.Web.UI.IStateManager接口:

public void TrackViewState()
{
this._IsTrackingViewState = true;
}
public bool IsTrackingViewState
{
get
{
return this._IsTrackingViewState;
}
}
public object SaveViewState()
{
return new Pair(this._text,this._selected);
}
public void LoadViewState(object state)
{
if(state!=null && state is Pair)
{
Pair p = (Pair)state;
this._text = (string)p.First;
this._selected = (bool)p.Second;
}
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved