2012年2月19日 星期日

一秒看破ComboBox 繫結

不只ComboBox 很多控制項都可以跟資料繫結

繫結的東東是 查詢完結果的資料集 (就是可以放到 XXX.DataSource = 右邊的東東)

然後把ComboBox的屬性設一設 他就會跟他繫結

請參照ADO.NET 魔術化的VS工具 - Combox繫結

你就會有以下效果

但是如果你希望你的ComboBox不只看得到name 也要看到id 或者其他欄位 怎辦?

像是
1.AAA
2.BBB
3.CCC

你會發現你無論如何 DisplayMember 或者 ValueMember 都只能挑這資料集的一個欄位

X,那不然就用2個ComboBox 一個裝name 一個裝id 再用foreach合體字串 再用foreach items.add 再...

當然可以,而且顯然方法百百種都可以達成,只是那就失去使用控制項資料繫結的便利性了

使用控制項資料繫結,只要將查詢完的資料指定給ComboBox 的DataSource 就可以免除寫items.add迴圈

既然要ComboBox Display 複數Member 很麻煩做的話 換個角度思考 把查詢結果直接便成最終格式就好了

使用T - SQL

生個新方法

搞定

2012年2月17日 星期五

typed dataset 查複合表的問題

如果你是用typed dataset 來查join起來多對多的表 你會失敗 會看到無法啟用條件約束。一或多個資料列的值違反非 Null、唯一或外部索引鍵條件約束

即使你的T - SQL完全正確 而且查詢器確實查到資料了 你還是會失敗

經實驗發現因為它自以為是"強"型別 所以每個TableAdapter裡面都必須有主鍵 但是預設建立的TableAdapter如下,只有一把鑰匙

但是因為是join出來的複合表 所以這把假鑰匙自然重複 它便自作聰明的認為違反條件約束

手動以複合鍵來表示該表的唯一值即可 效果如下