使用ListControl辛酸歷程

摘要:使用ListControl辛酸歷程

為了節省大家的時間,如果您已經會綁繫資料控制項,

像是DropDownList的ListItem資料來源是從資料庫或其他,或您已經會寫方法(函式),就不用看以下拙作,如果還是很有耐心的看完,希望可以有良性的討論,讓彼此可以相互成長。

可以發現我不斷的在寫重複的程式碼,並且運用快捷鍵最多的就是Ctrl + C 和 Ctrl + V,我不斷的翻閱前輩的程式碼,瘋狂的尋找可以使用的程式碼,我就像弗蘭肯斯坦再拼湊科學怪人,最厲害的就是我成功了,但不幸的科學怪人如果不動的、或有異樣,也只能用五雷灌頂試看看可不可以救活他,或在暴風雨中吶喊,為什麼我要創造出你!!

回歸正題,舉個例子,相信Binding Control是我們經常做的事情,如果連Binding Control都沒有,那想必這個科學怪人真的很恐怖,想起我剛進公司時,一個page裡面有五六個下拉式選單,我就很努力的一個一個加選項進去,有一天,專案經理跟我說,順序要改,我的媽啊!他的一句話,我要改好幾十個地方。
這類型可以與資料庫綁繫的控制項,當初的設計應該就是要讓使用者去資料庫要資料,而非自己慢慢加料,如果使用資料庫當資料來源,這故事就可以換說,當我進公司三個月後,有一天專案經理跑過來說,有選單的順序要改,大工程喔,好幾個page都要改。 我打開資料庫,問專案經理,是這兩個選項要顛倒是吧,把他排序倒過來,改完,專案經理問我說,改完了? 我回答他,對!改完了! 客官您們說,爽不爽!相信大家也都是這樣綁繫清單控制項,我比較愚蠢,直到三個月才了解苦工做一次就好。

如果有綁繫清單控制項,相信對下面的程式碼一定很熟悉,


            Contorl.DataSource = Data;
            Contorl.DataTextField = "欄位名稱";
            Contorl.DataValueField = "欄位的值";
            Contorl.DataBind();


所以好多page都有一堆,這樣的程式碼存在,如果有十個下拉選單,就可以看到十段這樣重複的code,所以我會分開寫十段,然後複製貼上並小改sql,很快,但是遇到維護要修改時,我會跑去廁所哭

自從去上家教,被老師醍醐灌頂後,在家裡寫成一個靜態函式呼叫,這樣少寫四行,只要寫十段sql。

 

public static void BindingListControl(ListControl Contorl, DataTable Data, string TextField, String ValueField)
        {
            Contorl.DataSource = Data;
            Contorl.DataTextField = TextField;
            Contorl.DataValueField = ValueField;
            Contorl.DataBind();
        }

當下寫了第二次sql時才發現,sql根本就只要下一次就好了。
因此在page多一段函式


    private void myBindControl(ListControl targetControl, string group)
    {
        string whr = string.Format("group= '{0}'", group);
        string sql = "sql 語法 where"+ whr;
        BindingListControl(targetControl, DataTable(sql),"欄位名稱","欄位的值");
    }


每個清單控制項只要寫一段。


所以,寫程式苦工只要做一次就好,接下來,就享受爽快的使用工具,說實在話,才經過三個月,要我寫綁繫清單控制項,我早忘了,但我知道,我要綁繫清單控制項,我會用這工具!

記得上面的code反反覆覆修改很多次,原本採用多載寫了好幾個都是繼承ListControl的物件,發現有ListControl這位偉大的父親,才改寫成ListControl,
上 面的code丟給在公司的師傅看,在師徒討論之下衍伸出許多版本,像是我們經常會需要用到第一個ListItem是自訂的狀態,所以寫了一個可以自訂第一 個ListItem的函式,接著又發現每次都要設定Text與Value的欄位名稱很麻煩,因此私底下說好,DataTable第一個欄位都放 value,第二的欄位都放Text,後來發現家教的老師也有寫這一招,私底下的通常都比較好用。

上個月初,師傅突然說,當初寫這幾個綁繫的函式,真的很好用,也用得很兇,我感覺到當初沒有私藏一招,收穫更大的喜悅,不然可能永遠都只在用第一個版本,沒有後來衍生出其他更好用的工具。

註:師傅只是早我進公司兩個月的同事,但真的很感謝有他,教我許多基礎的東西,也常常助我一臂之力,因此就開始都稱他為師傅。

 

 

 

 

 

 

 

 

 

 

 

 

如文章有錯誤,煩請告知,新人發帖請多包涵

 

創用 CC 授權條款