我需要在完全加载更新面板时运行javascript函数(我想滚动),而不是在初始页面加载时运行。
请建议。
由于
答案 0 :(得分:21)
这是在更新后获取结束事件的方法。
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(EndRequest);
function EndRequest(sender, args) {
}
</script>
答案 1 :(得分:2)
未测试
<script type="text/javascript">
var app = Sys.Application;
app.add_init(ApplicationInit);
function ApplicationInit(sender) {
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (!prm.get_isInAsyncPostBack())
{
prm.add_pageLoaded(PageLoaded);
}
}
function PageLoaded(sender, args) {
//Do something
}
</script>
答案 2 :(得分:1)
如果您正在使用AJAX,那么我发现在返回异步回发时尚未向用户发出警报的唯一方法是向PageRequestManager添加“结束请求”处理程序。
通过这种方式,您可以告诉请求管理器在从AJAX的异步回发事件返回时运行javascript函数。
执行此操作的代码是:
function load()
{
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
其中“EndRequestHandler”将是您要调用的javascript函数的名称。 在标签的Onload事件中调用上述函数:
<body onload=”load()”>
function EndRequestHandler()
{
alert(“You record has been saved successfully”);
}
现在,如果您想根据服务器端代码中的逻辑(后面的代码)给出不同的消息,那么您可以使用服务器端隐藏字段:
<input id=”hdnValue” type=”hidden” runat=”server” value=”" />
在Asrechronous Post Back:
中设置服务器端代码中的值受保护的子btn_Click(ByVal sender As Object,ByVal e As System.EventArgs)处理btnCreateSample.Click
If condition Then
hdnValue.value = “do this”
Else
hdnValue.value = “do that”
End If
End Sub
现在,您可以在Client Side EndRequestHandler函数中检查此隐藏字段的值,并根据其值为用户提供不同的警报:
function EndRequestHandler()
{
if (document.getElementById(‘<%= hdnValue.ClientID %>’).value == “do this”)
{
alert(“You record has been saved successfully”);
}
else
{
alert(“There is an error”);
}
}
答案 3 :(得分:0)
如果使用了jquery,你可以使用下面的代码
这是为了显示已保存的消息,并在更新面板更新后5秒后隐藏该消息
function pageLoad() {
window.Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
function EndRequestHandler()
{
window.setTimeout(function () {
var label = window.$get('<%= lblMsg.ClientID%>');
if (label != null) { label.style.display = 'none'; }
}, 5000);
}