2011-03-23 79 views
16

後的JavaScript函數我基本都在我的UpdatePanel的文字,其基於在我隱藏的方法JavaScript數組。呼叫的UpdatePanel回發問題

,當涉及到我的加載頁面加載內容我沒有問題。但是,如果我嘗試執行搜索以更新我的updatepanel中的javascript數組文本,我發現在JavaScript已經觸發後,文字會在回發中得到更新。

這裏是什麼,我有一個基本的例子:

<script type="text\javascript"> 
function BindMyFunction(itemList) 
{ 
    //Do something 
} 
</script> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate> 
<!-- Literal containing generated JS array --> 
    <asp:Literal ID="ProfileJavscriptOutput" runat="server"></asp:Literal> 
    <ul id="person-search"> 
    <li><asp:TextBox ID="TxtFirstname" runat="server" Text=""></asp:TextBox></li> 
    <!-- Update Literal onClick --> 
     <li><asp:ImageButton CssClass="searchbtn" ID="ImageButton1" runat="server" OnClick="ImageButton1_Click" /></li> 
    </ul>  
    <!-- Some jCarousel rendered --> 
</asp:UpdatePanel> 

我一直在看下面的文章:

ASP.NET - UpdatePanel and JavaScript

call javascript after updatepanel postback

但我不能似乎將其正確應用於我的代碼。

它的時候我不使用一個UpdatePanel工作正常。但這是一項要求,因此在執行搜索時頁面位置不會移動。

+0

是什麼代碼看起來像以前它是什麼樣子等之後? – 2011-03-23 22:03:47

+0

整個頁面加載時如何調用JavaScript? – 2011-03-23 22:12:28

+11

您的母親有沒有告訴過您更新面板不好? – 2011-03-23 23:00:48

回答

25

您可以在Page_Load事件中添加以下代碼:

ScriptManager.RegisterStartupScript(Me.rptGridAlbum, rptGridAlbum.GetType, "scriptname", "somejavascript", True) 

這將AJAX回調後解僱你的頁面上的JavaScript。

MSDN

+0

是的,我工作基本上調用ScriptManager.RegisterStartupScript獲取初始數據,然後當我執行我的搜索更新Javascript的時候,我調用了它。 – R100 2011-03-24 09:57:07

+19

太糟糕了,沒有給出更好的參數解釋,否則這個答案可能會有更多的選票 – 2013-02-13 23:54:19

+2

如果你想包括一個完整的JavaScript文件請注意,第四個參數不是文件的路徑,但是實際的javascript內容。你可以做一些像'File.ReadAllText(Server.MapPath(「〜/ Virtual/Path/To/File.js」))' – TJB 2014-01-13 23:13:35

0

你可以創建任何需要的時候,敷調用該Web服務的JavaScript方法返回的JavaScript陣列到頁面的簡單Web服務方法。調用JavaScript方法以刷新在瀏覽器端存儲陣列會比預期的JS數組文本要在UpdatePanel回發任何成功再次解析更好。

+0

更新關於UpdatePanel的回發一個JS陣列可能是更好的使用['ScriptManager.RegisterArrayDeclaration'](https://msdn.microsoft.com/en-us/library/bb292362%28v=vs.110%29.aspx)來完成。 – Abel 2015-06-12 02:24:08

0
var prm = Sys.WebForms.PageRequestManager.getInstance(); 
if (prm != null) { 
    prm.add_endRequest(function (sender, e) { 
     if (sender._postBackSettings.panelsToUpdate != null) { 
      DisplayCurrentTime(); // here your javascript function 
     } 
    }); 
};