[ASP.NET][分享]下拉式多選清單使用者控制項 Multi Select DropDownList

  • 24223
  • 0

摘要:[ASP.NET][分享]下拉式多選清單使用者控制項 Multi Select DropDownList

最近在開發小程式時,有個需求,就是要挑選多個不定的項目,

我以往的作法可能就是使用 CheckBoxList 來達成囉。

不過當版面擠了越來越多的東西,要挑選的項目越來越多的時候,可能就會有畫面凌亂的情況。

使用上也不會很便利,自己看了也會很心煩 >"< ...

無奈,ASP.NET沒有內建這類的控制項,但我想這個功能也是很多人的需求吧!

既然,沒有內建,又沒有頭緒的情況下,就只得在茫茫網海中搜尋了...

搜尋後,不得了,有許許多多的實作品,玲瑯滿目,

不過在追求以最快的速度去完成工作的前提下,並沒有多少時間去研究那些控制項,

在頭腦昏昏的情況下,只能挑選當下最容易瞭解的專案來著手。

幾經比較後,

決定從 The Code Project 中 Multi select Dropdown list in ASP.NET 這個專案來著手研究。


 Multi select Dropdown list in ASP.NET 這個專案非常接近我想要的功能,

不過它是使用 ListBox 來完成多選的動作。

不過他的多選動作不夠直覺,有時候要使用者多按個Ctrl+滑鼠左鍵來選擇都會嫌麻煩 frown ...

所以決定改用 CheckBoxList 來改造,也比較能夠達到我想要的功能。

因此在幾經研究與改寫,終於完成了一個比較像樣也堪用的控制項了。

完成結果如下:

 


在屬性的變動上不大,都維持大部分的屬性。

自己新增的有:

ListHeight 用來指定下拉列表的高度

Items 直接存取到 CheckBoxList 的 Items 屬性

SelectTextCSV 用來取得以逗號隔開的文字部分,或是可以用文字部分來指定預設選取的項目。

SelectValuesCSV 用來取得以逗號隔開的項目值部分,或是可以用來指定預設的選取項目。


 

基本上,這樣的控制項已經滿符合我的需求了,對於使用的移植性也滿便利的,不需要再次引入其他的檔案或圖片。

不過其本身也存在著一些缺點:

  1. 使用者控制項本身的缺點,當加入N個控制項到網頁上時,其控制項裡面的Script, Style內容也會重複N次,對於傳輸效能上可能會有一些引響。
  2. 不支援智慧標籤,即所有的動作都必須透過程式碼去指定,不過直接使用List屬性時,一樣可以透過程式碼來對CheckBoxList做資料繫結的動作,一樣可以直接使用資料庫資料。
  3. 在其他控制項內(例如: GridView)引入時,由於好像不會觸發控制項內的PageLoad事件,所以要自行呼叫PageInit()方法來初始化控制項。

如果控制項能夠採用類似標準控制項這樣的寫法的話,在使用上的便利性一定又會大增,也可能可以改善上述的缺點。

如果您有相關的解決方法,也歡迎您能分享給我知道,在此先說聲謝謝囉!smiley

最後,

感謝原作者 Deepthi Viswanathan Nair 分享這樣簡單好用的控制項,

在小年夜的今天分享這個簡單堪用的控制項,希望對您有幫助,也歡迎您能改善並分享之。

 

檔案下載:WCPWebControls.zip

 

感謝您看完這篇文筆拙劣的文章 ^^

簡單就是美 :: { 簡單其實很不簡單 }