首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

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

     編輯:關於ASP.NET

基於 DHTML HTC 實作可伸展至瀏覽器外的 ComboBox 控件

需求背景

  • DropDownList 缺乏文字輸入功能。
  • 現有 ComboBox 多用 DIV 模擬下拉(無法超出瀏覽器視窗)或 TextBox+ListBox(佔用版面)。
  • 發現 A DHTML Combo Box (HTC) 可解決伸展問題,決定封裝為伺服器控件。
ComboBox 效果圖

關鍵類別設計

  • ComboBox: 核心控件,屬性 Text 取值、Items 集合、無 SelectedIndexChanged(依需求可加)。
  • ComboItem: 對應 ListItem,無 Value 屬性(僅顯示文字)。
  • ComboItemCollection: 實作 ICollection,功能類似 ListItemCollection。

ViewState 實作精華:IStateManager

ComboItem 實作 IStateManager 以支援 ViewState:

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

集合類別 ComboItemCollection 同樣實作 IStateManager,將項目陣列序列化為 object[] 儲存。掌握 IStateManager 四方法(TrackViewState、SaveViewState、LoadViewState、IsTrackingViewState)是開發支援 ViewState 自訂控件的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved