最近在開發小程式時,有個需求,就是要挑選多個不定的項目,
我以往的作法可能就是使用 CheckBoxList 來達成囉。
不過當版面擠了越來越多的東西,要挑選的項目越來越多的時候,可能就會有畫面凌亂的情況。
使用上也不會很便利,自己看了也會很心煩 >"< ...
無奈,ASP.NET沒有內建這類的控制項,但我想這個功能也是很多人的需求吧!
既然,沒有內建,又沒有頭緒的情況下,就只得在茫茫網海中搜尋了...
搜尋後,不得了,有許許多多的實作品,玲瑯滿目,
不過在追求以最快的速度去完成工作的前提下,並沒有多少時間去研究那些控制項,
在頭腦昏昏的情況下,只能挑選當下最容易瞭解的專案來著手。
幾經比較後,
決定從 The Code Project 中 Multi select Dropdown list in ASP.NET 這個專案來著手研究。
Multi select Dropdown list in ASP.NET 這個專案非常接近我想要的功能,
不過它是使用 ListBox 來完成多選的動作。
不過他的多選動作不夠直覺,有時候要使用者多按個Ctrl+滑鼠左鍵來選擇都會嫌麻煩 ...
所以決定改用 CheckBoxList 來改造,也比較能夠達到我想要的功能。
因此在幾經研究與改寫,終於完成了一個比較像樣也堪用的控制項了。
完成結果如下:
在屬性的變動上不大,都維持大部分的屬性。
自己新增的有:
ListHeight 用來指定下拉列表的高度
Items 直接存取到 CheckBoxList 的 Items 屬性
SelectTextCSV 用來取得以逗號隔開的文字部分,或是可以用文字部分來指定預設選取的項目。
SelectValuesCSV 用來取得以逗號隔開的項目值部分,或是可以用來指定預設的選取項目。
基本上,這樣的控制項已經滿符合我的需求了,對於使用的移植性也滿便利的,不需要再次引入其他的檔案或圖片。
不過其本身也存在著一些缺點:
- 使用者控制項本身的缺點,當加入N個控制項到網頁上時,其控制項裡面的Script, Style內容也會重複N次,對於傳輸效能上可能會有一些引響。
- 不支援智慧標籤,即所有的動作都必須透過程式碼去指定,不過直接使用List屬性時,一樣可以透過程式碼來對CheckBoxList做資料繫結的動作,一樣可以直接使用資料庫資料。
- 在其他控制項內(例如: GridView)引入時,由於好像不會觸發控制項內的PageLoad事件,所以要自行呼叫PageInit()方法來初始化控制項。
如果控制項能夠採用類似標準控制項這樣的寫法的話,在使用上的便利性一定又會大增,也可能可以改善上述的缺點。
如果您有相關的解決方法,也歡迎您能分享給我知道,在此先說聲謝謝囉!
最後,
感謝原作者 Deepthi Viswanathan Nair 分享這樣簡單好用的控制項,
在小年夜的今天分享這個簡單堪用的控制項,希望對您有幫助,也歡迎您能改善並分享之。
檔案下載:WCPWebControls.zip
沒有留言:
張貼留言