2011-03-23 35 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 
     } 
    }); 
};