iT邦幫忙

DAY 22
1

給學弟的ASP.NET網頁學習經驗系列 第 22

ASP.NET學習經驗#22----CheckBoxList不貼心,學習使用自訂控制項

  • 分享至 

  • xImage
  •  

有些時候總是需要做出從資料庫讀取資料產生選項做複選,並且記錄至資料庫

當然使用的是CheckBox,但是要與資料庫做連線使用CheckBoxList可以方便DataBind

但是卻同時遇到提供的屬性無法滿足我,居然無法直接取出所有值!!!

測試一下發現真的只能取出單一的值...

當然可以手動寫一段程式碼(超麻煩):

StringBuilder sb = new StringBuilder();

for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
    if (CheckBoxList1.Items[i].Selected)
    {
        sb.Append(CheckBoxList1.Items[i].Value.Trim() + ",");
    }
}
sb = sb.Remove(sb.Length-1,1);
Label1.Text = sb.ToString();

雖然順利可以取出,但另一個問題是沒辦法直接設定....

又要寫一大堆程式碼超不方便!!!!(一樣要利用迴圈自行比對每一項的內容後再做修改)

實在是太不順心,可能我能力不足或不想寫如此多重複性很高卻又效益很不好的Code

(感覺就應該有更好的方法才對啊....真的是感覺!!)

所以我決定再次上網尋找前輩求助

[ASP.NET 自訂控制項]CheckBoxList複選的SelectedValue,用逗號串接

但是要怎麼用呢?

順便學習一下是如何寫自訂控制項與使用

可以看到自訂的控制項是先繼承WebControl基底類別

進行擴充或者覆寫需要的功能!

這個新的JoeyCheckBoxlist就是覆寫SelectedValue的取用與設定的方法

改為可以用字串"1,2,3"的方式直接設定對應的Value並且忽略不合理的Value

接著在設計頁面的設置一下:

<%@ Register Assembly="WebApplication3" Namespace="WebApplication3" TagPrefix="test" %>

要設定對應的命名空間,應用程式集(通常都是專案本身的名稱)與要使用的標籤

記得先建置一下專案,這樣才會被載入辨識,就可以看到:

測試一下!

Label1.Text = JCheckBoxlist.SelectedValue;

這樣要做資料的設定與取值就變得非常簡單了!!!

前人種樹,後人乘涼...

不對不對!!!重點是要放在觀察前輩的範例並學習如何自訂控制項

畢竟不會總是有別人的可以使用與參考,

透過範本是希望能親身體驗與幫助學習,

等到真正需要時自己也能有解決問題的能力!


上一篇
ASP.NET學習經驗#21----產生XML內容的XmlTextWriter
下一篇
ASP.NET學習經驗#23----MultiView輕鬆切換內容
系列文
給學弟的ASP.NET網頁學習經驗30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
Alan.Liu
iT邦研究生 1 級 ‧ 2014-10-08 00:37:31

讚! 加油

0
mis2000lab
iT邦好手 1 級 ‧ 2014-10-08 10:05:08

讚!

0
school
iT邦新手 4 級 ‧ 2014-10-10 17:40:09

謝謝分享

我要留言

立即登入留言