2012-12-26 25 views
12

我有一个页面添加树文件脚本。在updatepanel的部分回发之后执行javascript?

<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript" src="js/init.js"></script> 
<script type="text/javascript" src="js/easing.js"></script> 

我有一个带有dropdownlist的updatepanel。当运行SelectedIndexChanged事件(updatepanel的部分回发)时,不要执行javascript。

+3

这里是你如何做到这一点:http://stackoverflow.com/questions/3341623/asp-net-updatepanel-in-gridview-jquery-datepicker/3341741#3341741 – Aristos

回答

23

使用

function pageLoad(sender, args) { 

    InitialiseSettings(); 
} 

function InitialiseSettings(){ 
    // replace your DOM Loaded settings here. 
    // If you already have document.ready event, 
    // just take the function part and replace here. 
    // Not with document.ready 
    $(element).slideUp(1000, method, callback}); 

    $(element).slideUp({ 
        duration: 1000, 
        easing: method, 
        complete: callback}); 
} 

或尝试用add_endRequest事件处理程序:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(InitialiseSettings) 

更新

更好的所有代码的document.ready移动到InitialiseSettings功能和通它到pageLoaded事件

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(InitialiseSettings) 

代码示例

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(InitialiseSettings) 
+0

非常感谢,但在InitialiseSettings中初始化缓解。 – Niloo

+0

@Niloo请看我更新的答案 –

+0

谢谢,我应该使用这个:'$(document).ready(function(){Sys.WebForms.PageRequestManager.getInstance()。add_endRequest(InitialiseSettings)函数InitialiseSettings(){// 宽松,其他初始化放在这里 }}) ' – Niloo

18

要以全部或部分回发你的JavaScript,把你的JavaScript代码到JavaScript页面加载()函数。

function pageLoad() 
{ 
    //your javascript code 
} 

例子:

function pageLoad() { 

    $(':submit').click(function() { 
     CommodityArray(); 
    }); 
    $('#btn_image').click(function() { 
     CommodityArray(); 
    }); 
    $(".repHeader").disableSelection(); 

    CommodityArray(); 
} 

希望它能帮助! :)

+0

@Aristos ::你的意思是说,这不适用于更新面板?你自己试过了吗? – Avishek

+0

@Niloo ::写你的代码在pageLoad(){//}中,而不是$(document).ready(function(){//}来每次页面重新加载或回传时运行它 – Avishek

+0

+1好的,它的适用于网络4+ http://msdn.microsoft.com/en-us/library/bb386417(v=vs.100).aspx – Aristos

6

更新面板后,您必须使用以下代码。

<script type="text/javascript" language="javascript"> 
var pageRequestManager = Sys.WebForms.PageRequestManager.getInstance(); 
pageRequestManager.add_endRequest(NewCharacterCount); 
</script> 

其中NewCharacterCount是您的javascript函数名称。

阅读本文Sys.WebForms.PageRequestManager endRequest Event 希望它能帮助你。

0

如果您正在使用UpdatePanel,并且想要在更新面板中的内容刷新后调用javascript函数,则可以使用下面的方法轻松完成。在页body标签,调用一个函数RefreshContent()

<body onload="RefreshContent()"> 

<script type="text/javascript"> 
    function RefreshContent() 
    { 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
    } 

    function EndRequestHandler() 
    { 
    alert("Add your logic here"); 
    } 
</script> 

参考链接 http://www.infoa2z.com/asp.net/how-to-call-javascript-function-after-an-updatepanel-asychronous-request-to-asp.net-page

0

您可以使用PageRequestManager client events。 sender参数将包含您需要的信息。例如,一个可以这样做:

// Register event handler 
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoaded); 

/// Executed when all page content is refreshed, full page or async postback: https://msdn.microsoft.com/en-us/library/bb397523.aspx 
function pageLoaded(sender, args) { 
    var isPostBack = sender.get_isInAsyncPostBack(); 
    if(!isPostBack) return; 

    // PostBack logic here. 
} 
相关问题