UpdatePanel回发问题后调用Javascript函数

时间:2011-03-23 21:56:47

标签: asp.net ajax javascript-events updatepanel

我在UpdatePanel中基本上有一个文字,它根据我的代码隐藏中的方法生成一个javascript数组。

在页面加载时加载我的内容时没有问题。但是,如果我尝试在我的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时,它工作正常。但这是一项要求,以便在执行搜索时页面位置不会移动。

3 个答案:

答案 0 :(得分:25)

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

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

这将在AJAX回调后在你的页面上激活javascript。

MSDN

答案 1 :(得分:0)

您可以创建一个简单的Web服务方法,在需要时将javascript数组返回到页面,并以javascript方法将调用包装到该Web服务。调用javascript方法在浏览器端刷新内存中的数组将比预期在UpdatePanel回发上再次解析js数组文字更有效。

答案 2 :(得分: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
        }
    });
};