2012-12-26 8 views
12

Mam stronę, która dodaje do niej skrypt plików drzewa.Wykonywanie javascript po częściowym odświeżeniu informacji o updatepanel?

<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> 

Mam updatepanel z dropdownlist. Po uruchomieniu zdarzenia SelectedIndexChanged (częściowe ogłaszanie zwrotne aktualizacji) nie należy wykonywać javascript.

+3

Oto jak to zrobić: http://stackoverflow.com/questions/3341623/asp-net-updatepanel-in-gridview-jquery-datepicker/3341741#3341741 – Aristos

Odpowiedz

23

Zastosowanie

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}); 
} 

lub spróbuj obsługi add_endRequest zdarzeń:

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

Aktualizacja

Lepiej przenieść cały kod z document.ready funkcjonować InitialiseSettings i przekazać to do pageLoaded wydarzenie

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

Kod Przykład:

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

Wielkie dzięki, ale do inicjalizacji w wersji InitialiseSettings. – Niloo

+0

@Niloo Zobacz moją zaktualizowaną odpowiedź –

+0

Dzięki, powinienem użyć tego: '$ (document) .ready (function() {Sys.WebForms.PageRequestManager.getInstance().add_endRequest (InitialiseSettings) InitialiseSettings function() {// easing, inne inicjalizacji idzie tu }}) ' – Niloo

18

Aby uruchomić JavaScript w pełnych i częściowych postbacks, umieścić swój kod javascript w javascript pageload (funkcyjny).

function pageLoad() 
{ 
    //your javascript code 
} 

Przykład:

function pageLoad() { 

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

    CommodityArray(); 
} 

Nadzieję, że to pomaga! :)

+0

@Aristos :: Czy to oznacza, że ​​to nie działa z panelem aktualizacji? Czy próbowałeś sam? – Avishek

+0

@Niloo :: napisz swój kod w pageLoad() {//} zamiast $ (document) .ready (function() {//}, aby uruchamiać go za każdym razem, gdy Strona ładuje się lub odsyła po raz kolejny. – Avishek

+0

+1 OK, jego działa dla sieci 4+ http://msdn.microsoft.com/en-us/library/bb386417(v=vs.100).aspx – Aristos

6

Musisz użyć następującego kodu po panelu aktualizacji.

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

gdzie NewCharacterCount to nazwa funkcji javascript.

Przeczytaj ten artykuł Sys.WebForms.PageRequestManager endRequest Event Mam nadzieję, że ci to pomoże.

0

Jeśli używasz UpdatePanel i chcesz wywołać funkcję javascript po odświeżeniu treści w panelu aktualizacji, możesz użyć poniższego sposobu, aby zrobić to łatwo. Strona body w tagu, zadzwoń 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> 

Link referencyjny http://www.infoa2z.com/asp.net/how-to-call-javascript-function-after-an-updatepanel-asychronous-request-to-asp.net-page

0

Można użyć PageRequestManager client events funkcją. Parametr nadawcy będzie zawierał potrzebne informacje. Na przykład można to zrobić:

// 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. 
} 
Powiązane problemy