我在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时,它工作正常。但这是一项要求,以便在执行搜索时页面位置不会移动。
答案 0 :(得分:25)
您可以在Page_Load事件中添加以下代码:
ScriptManager.RegisterStartupScript(Me.rptGridAlbum, rptGridAlbum.GetType, "scriptname", "somejavascript", True)
这将在AJAX回调后在你的页面上激活javascript。
答案 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
}
});
};