2012年8月16日 星期四

CheckBoxList出現時就預設有沒有選到某些值~

這個關鍵字好常用又好難找... 好啦我對關鍵字一直很不敏感,都工作一年了哭哭
簡單的來說就是要從資料庫撈出幾個數據,用checkboxlist的方式呈現,然後其中有幾個要預設選中



數據可能要長這樣(原諒我手上現在沒有小方框可以用吧ˊ ˋ )

● 小白
● 小花
○ 小黑
● 小黃
○ 小紅

基本上要變成這個結果需要兩組輸入數據
一組是本來的選項,小白小花小黑小黃小紅
一組是預設要選中的選項,小白小花小紅

當然數據撈出來最好不要長得像以上那樣不然光想怎麼切頭都會痛死= =
所以一開始在撈的時候就盡量撈成這樣「小白,小花,小黑,小黃,小紅」
可以用迴圈去撈~反正這類資料通常不會太多~(太多再說吧)
這樣就可以用以下字元陣列把需要字串塞進字串陣列了


char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string String1 = "小白,小花,小黑,小黃,小紅";
string[] s = String1.Split(delimiterChars);

這樣s裡面就會是[小白][小花][小黑][小黃][小紅]

接著參考大陸人的用法,這是把本來選項塞到checkboxlist的方法

你先从数据库查询一个数据源dt(DataTable类型)
然后
cbxList.DataSource = dt;//数据源
cbxList.DataTextField = "name";//显示的名称
cbxList.DataValueField = "value";//返回的值
cbxList.DataBind();

這樣基本上就可以把需要的兩組選項都弄到了
接下來用方便的foreach比對

   foreach (string val in s)
        {
            ListItem item =  CheckBoxList1 .Items.FindByText(val);// FindByText找不到可以改用FindByValue試試
            if (item != null)
            {
                item.Selected = true;
            }
        }



複習一下,整串程式長這樣
記得CheckBoxList1 要改成自己的CheckBoxList喔...

char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string String1 = "aa,rr,xxx,tt";//預設要選中的值
string[] s = String1.Split(delimiterChars);

        foreach (string val in s)
        {
            ListItem item =  CheckBoxList1 .Items.FindByText(val);
            if (item != null)
            {
                item.Selected = true;
            }
        }



如果有幫到忙就太好啦~我也不奢求留言或轉載,反正後台有人看過這篇我也知道哇哈哈~
(畢竟這是很基本的東西,而且大部分人都很惜字如金哈哈哈)
多來看看我就好囉~有問題再留言吧,我會盡量幫忙看看~

...但你很堅持要拿去放在自己的網誌麻煩留個網址告知一下,我會很謝謝你...

沒有留言:

張貼留言