2012年11月3日 星期六

CheckList 應用技巧


   
                 

今天我遇到一個很特別的需求,
他要讓"使用者"看得到 CheckBox ,但是不能選,
照理來講我們都直接使用Enable 屬性來控制,
但是"使用者"又說不想看到它是灰色的,
這時候就.......付錢的最大@@





首先是正常做法,但是Check會變成灰色:

using (DatabaseEntities1 db = new DatabaseEntities1()) {  //我們先建立連線
       var result = from i in db.chkTable              
                    select new {i.ischk , i.chkvalue};//ischk 就是 true ,false  
                                                    //chkvalue 就是柯南,孫悟空...
             result 就是我們要的資料 
            CheckBoxList1.Items.Clear();  //先把CheckBoxList1清空
            foreach (var x in result)     //一筆一筆搜尋我們要的東西
            {
             ListItem list = new ListItem();
             list.Text = x.chkvalue;  //放入 柯南,孫悟空,卡卡西,天天
             list.Value = x.ischk;    //放入 true,false ,true  ,false
             list.Selected = Convert.ToBoolean(x.ischk.ToString()) ;//設定是否勾選
             list.Enabled = false;         //讓使用者不能操作,只能觀看
             CheckBoxList1.Items.Add(list);//加入至CheckBoxList1
            }
        }
接下來是為了"使用者"的變形作法:
首先設定一個變數
int a=1;
再來抓兩張圖片
string ischk = "<img src=\"ischk.png\" />";//這是打勾的
string nochk = "<img src=\"nochk.png\" />";//這是沒打勾的
using (DatabaseEntities1 db = new DatabaseEntities1()) {  //我們先建立連線
       var result = from i in db.chkTable              
                    select new {i.ischk , i.chkvalue};//ischk 就是 true ,false
                                                   //chkvalue 就是 柯南,孫悟空...
                        result 就是我們要的資料
            CheckBoxList1.Items.Clear();  //先把CheckBoxList1清空
            foreach (var x in result)     //一筆一筆搜尋我們要的東西
            {
             list.Text = x.chkvalue;  //放入 柯南,孫悟空,卡卡西,天天
             list.Value = x.ischk;    //放入 true,false ,true  ,false
             list.Selected = Convert.ToBoolean(x.ischk.ToString());//設定是否勾選
             list.Enabled = false;    //讓使用者不能操作,只能觀看
               if (list.Selected == true)
                    {
                        if ((a % 4) == 0)
                        { Label1.Text += ischk + list.Text + "</br>";}
                        else 
                        { Label1.Text += ischk + list.Text;}
                    }
                    else
                    {
                        if ((a % 4) == 0)
                        {Label1.Text += nochk + list.Text + "</br>";}
                        else
                        {Label1.Text += nochk + list.Text;}
                    }
            }         }





完成!!


oh my god ,,,,,,
就在剛剛又有一個新的做法!
超方便! 完全不用動到程式碼
只要在頁面 CheckBoxList 控制項多一個屬性   onclick="return false"  

謝謝 will 保哥 提供的寶貴方法
will 保哥 的部落落 
http://blog.miniasp.com/




沒有留言:

張貼留言