2011-10-30 63 views
1

我有一個自制的工具欄控件,它在幾個地方都使用,都在UpdatePanel和一個外部。它依靠一些jQuery來設置它的按鈕。它有自己的啓動腳本嵌入其程序集。ASP.NET UpdatePanel:如何獲取客戶端腳本在每次刷新時運行

我遇到的問題是讓啓動腳本在工具欄位於更新面板的正確時間運行。由於它是在更新面板標記的隱藏面板中聲明的,因此在創建更新面板時會創建並加載它。但是,直到用戶完成了一些事情並且隱藏的面板變得可見之後,它纔會真正呈現。

我想讓啓動腳本在每次更新面板刷新時運行。 (理想情況下,如果工具欄可見,我只想這樣做,但如果需要,我會採取「每次刷新」。)但是,我希望工具欄在更新面板外部仍然可以正常工作,當它需要時要做的是鉤入文檔的.ready()處理程序。

鑑於工具欄從服務器端無法知道它是否位於更新面板內,但是負責確保必要的javascript,我該如何做到這一點?

謝謝。

ETA:我在this question的回答中找到了答案。這適用於我的工具欄,無論它是在更新面板還是在一個之外。謝謝大家!

+0

不知道這是否幫助,但我認爲你可以在服務器端告訴的UpdatePanel是否已經引起使用ScriptManager.GetCurrent(頁).IsInAsyncPostBack方法回發。你的情況會起作用嗎? –

+0

@JasonTuran嗯。也許吧,但從它的聲音來看,它只會告訴我一個更新小組已經回來了,而不是回發的小組是否是我的控制的祖先。爲此,我想我將不得不爬上.Parent屬性的層次結構。但是謝謝你! –

回答

0

糾正我,如果我錯了,但我會認爲UpdatePanel中的jQuery工具欄應該每次更新updatepanel時執行。所以也許在服務器端你可以判斷它是否是異步回覆。如果是的話,你可以在更新面板中寫一些javascript來執行。您可以使用一個字面控件,將其加載到更新面板中的佔位符中。喜歡的東西...

public void WebForm1_OnLoad(Object sender, EventArgs args){ 


    if(ScriptManager.GetCurrent(Page).IsInAsyncPostBack){ 
     var con = new LiteralControl("INSERT javascript here that would call jquery method"); 
     this.placeHolder.Controls.Add(con); 
    } 
} 
+0

我找到了解決我的問題的另一個問題的答案。但是,謝謝你的回覆!我給你信用回答這個問題。謝謝! –

+1

Ann:如果您發佈了發現的鏈接,這對其他人會有幫助。 – Tommy

相關問題