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

C# ASP.NET 2.0 複合控制項基礎開發:EnhancedListBox 與 ListMover 架構設計

     編輯:關於ASP.NET

傳統回傳方式實現列表排序

ListBox + 按鈕 (上移/下移) → 伺服器端 SelectedIndexChanged 事件 → Items.RemoveAt/Items.Insert → ViewState 自動保持新順序。缺點:每次操作完整回傳,網路延遲大、畫面閃爍。

EnhancedListBox 設計目標

  • 繼承 ListBox,加入標題與上/下移按鈕。
  • 客戶端 JavaScript 即時重排序,無回傳延遲。
  • 回傳時透過隱藏欄位同步新順序至伺服器端 Items 集合。

ListMover 複合控制項架構

  • 繼承 CompositeControl。
  • 包含兩個 EnhancedListBox (AvailableList、SelectedList)。
  • 四個移動按鈕:單項右移 (▶)、單項左移 (◀)、全數右移 (▶▶)、全數左移 (◀◀)。
  • 伺服器端 Click 事件處理項目移動,ViewState 維持狀態。

核心問題:客戶端狀態與伺服器端 ViewState 不一致

使用者在客戶端重排序後,若觸發其他回傳 (如頁面其他按鈕),伺服器端重建控制項時依 ViewState 還原舊順序,客戶端變更遺失。解決方案:隱藏欄位序列化 + LoadPostData 還原 (見進階篇)。

ASP.NET 1.x 相容性調整

  • Page.ClientScript → Page.RegisterClientScriptBlock / RegisterHiddenField。
  • CompositeControl 需手動實作 INamingContainer。
  • 無 ClientIDMode,ClientID 完全依賴命名容器層級。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved