UpdatePanel回发问题后调用Javascript函数

R10*_*100 16 asp.net ajax updatepanel javascript-events

我基本上在我的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>
Run Code Online (Sandbox Code Playgroud)

我一直在看以下帖子:

ASP.NET - UpdatePanel和JavaScript

在updatepanel回发后调用javascript

但我似乎无法正确地将它应用于我的代码.

当我不使用UpdatePanel时,它工作正常.但这是一项要求,以便在执行搜索时页面位置不会移动.

小智 25

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

ScriptManager.RegisterStartupScript(Me.rptGridAlbum, rptGridAlbum.GetType, "scriptname", "somejavascript", True)
Run Code Online (Sandbox Code Playgroud)

这将在AJAX回调后触发页面上的javascript.

MSDN

  • 太糟糕了,没有给出更好的解释,否则这个答案可能会有更多的Up票 (19认同)
  • 如果您尝试包含整个javascript文件,请注意第4个参数不是文件的路径,而是实际的javascript内容.你可以做一些像`File.ReadAllText(Server.MapPath("〜/ Virtual/Path/To/File.js"))` (2认同)