問題敘述:
需要抓取A資料庫的三個欄(班級名稱、期別、梯次)位放到DropDownList中一起顯示,但是由於DropDownList.DataTextField無法顯示多個欄位,所以只好先在SQL語法中動手腳!
在SQL語法中使用的是"+"號
程式片段範例:
SqlCommand cmd = new SqlCommand("select class_name+class_stage+class_en as newfield from classdb", conn);
DropDownList.DataTextField="newfield";
照理說資料庫裡沒有NULL值那方法這樣用就可以了!
合併是沒問題,但是偏偏遇到資料庫欄位中部份資料有 NULL值,使用+號合併後遇到NULL值,新的合併過後的欄位也會變成NULL值!!!
(例如:班級名稱→A班、期別→103.1期、梯次→NULL,那麼(班級名稱+期別+梯次)和(班級名稱+梯次)出來的值也會變成NULL)
一片空白的DropDownList卻抓得到該選項的其他資料資料很奇怪吧!
解決方法:
所以我的想法是避開欄位中是NULL值的部分
也就是說如果三個欄位都非NULL值那就優先顯示(班級名稱+期別+梯次),否則就顯示(班級名稱+期別)或(班級名稱+梯次)再把值丟進一個新的欄位,依然讓DropDownList.DataTextField顯示這個欄位,苦尋網路上的資料加自己做點變化百般測試後,皇天不負苦心人,成功拉!!分享給需要的人
用到的是SQL語法中的COALESCE()函數
使用方法:SELECT COALESCE
(ID1,ID2,ID3)
as
ID
from
TB
最後寫法
SqlCommand cmd = new SqlCommand("SELECT COALESCE(class_name+class_stage+class_en,class_name+class_stage,class_name+class_en) as newfield from classdb", conn);
程式片段範例:
DropDownList.DataTextField="newfield";
原來這麼簡單!!!可是COALESCE這個語法對我這個新手來說看都沒看過,算是用時間換經驗囉!!
參考資料
http://www.dotblogs.com.tw/puma/archive/2008/04/08/2617.aspx
http://www.dotblogs.com.tw/mis2000lab/archive/2010/11/16/dropdownlist_two_datatextfield.aspx
留言列表