2014年6月4日 星期三

在UpdatePanel裡面隱藏的Panel裡面的東西不會出現在原始碼??

遇到神奇的情況...

我檔案庫的介面,左邊是樹狀圖,右邊是表格,這兩者外面用一個UpdatePanel包住,因為按樹狀圖上面的東西後需要更新右邊的表格,不希望它是full postback 不然會一直閃。

然後因為介面的需要,我把右邊的表格放進一個Panel (Panel_File),因為一開始進入的畫面要看到另一個主要Panel的內容(Panel_Main),假如按下左邊的檔案樹,才會隱藏Panel_Main,顯示Panel_File。所以一開始就設定 Panel_File.Visible = "False"

狀況來了,現在我在 Panel_File裡面的元件前台頁面有包含javascript,實際在執行的時候卻發現根本沒有載入,以至於無法抓到 javascript 的 function ! 研判是因為一開始 Panel_File.Visible = "False" ,程式送出HTML結果時這一塊完全不會載入,但是當後面的流程使Panel_File.Visible = "True" 之後,卻因為它是在 UpdatePanel 裡面,所以只載入部分的更新 !?

----------------------

這搞了我好久,後來想到一個辦法 : 不要用Panel,改用div

<div runat="server" id="div_file" style="display:none">

</div>

這樣就解決了! 因為這樣做,在一開始依然會送出div_file內所有內容,但是瀏覽器顯示時會依照style="display:none"再把它隱藏起來。需要顯示的時候就這樣:

div_file.Style.Add("display", "block");