而且主頁中可以放多個 ContentPlaceholder 來讓畫面更有變化且更有彈性
但如果是這種情況,可就要小心本篇中提到的問題囉
I. 多個 ContentPlaceholder
可以看到,MasterPage 中可以一次放入多個 ContentPlaceholder
所以坎尼建了個 TooManyContentPlaceholder 的頁面,並選擇這個主頁
於是很合情合理的先在畫面上放個輸入框,令使用者可以輸入查詢條件
再放個 Gridview 來顯示條件
不過為求方便,就用 ObjectDataSource 來和取得資料的方法溝通
於是就把 TextBox1.Text 當成參數來源設定給 ObjectDataSource 使用
好了,測試沒問題就可以把程式交付給客戶了~ 樂勝~ 樂勝~
(把頁面跑起來)
啊是在玩我是嗎?
ID也是你叫我設的,我也選了 (詳見圖3及圖4),現在你跟我說找不到 ID (翻桌)
II. 冷靜
好,我們平心靜氣
經過谷歌大神的一番指導之後,坎尼發現完全找不到解決方案 XDDDD
因為大家都在談的是 MasterPage.FindControl 這個問題 (坎尼很久之前也有寫過一篇)
但在一陣誤打誤撞之後,不小心被坎尼試出來了:
若要設定不同 ContentPlaceholder 裡的 ControlID, DataSourceID, TargetControlID…請用該 Control 的 UniqueID
(就是長的像 ctl00$ContentPlaceholder1$TextBox1 這類的ID)
把 DataSourceID 和 ControlID 改成 UniqueID 之後,頁面就正常運作了
III. 小結
這次遇到這個問題的心得是:谷歌不是萬能 XD
所以記下這篇讓它更聰明一點
此次的範例下載