2009-07-27 13 views
43

मेरे पास एक पृष्ठ लोड फ़ंक्शन है जो एक .ascx नियंत्रण पर कुछ सीएसएस सेट करता है जिसे मैं नहीं बदल सकता। पृष्ठ लोड पर सब कुछ ठीक है, लेकिन जब एक अद्यतन पैनल नियंत्रण अद्यतन करता है, तो मेरा सीएसएस अब लागू नहीं होता है। पेज अपडेट के बाद मैं अपने फ़ंक्शन को कैसे पुन: चालू कर सकता हूं?अद्यतन पैनल रीफ्रेश के बाद मैं कुछ जावास्क्रिप्ट कैसे चला सकता हूं?

$(function() { 
     $("textarea").attr("cols", "30"); 
     $("input.tbMarker").css({ "width": "100px" }).attr("cols","25"); 
    }); 

यह स्पष्ट रूप से प्रारंभिक पृष्ठ लोड पर ही चलता है। अद्यतन के बाद मैं इसे कैसे चला सकता हूं?

+0

क्लाइंट की तरफ MSAjax Pageload घटना में टाई: http://stackoverflow.com/questions/9026496/running-script-after-update-panel-ajax-asp -नेट – dotnettex

+0

http://stackoverflow.com/a/339114/900284 –

उत्तर

38

add_pageLoaded हैंडलर जोड़ना भी काम कर सकता है।

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoadedHandler); 

नोट: हैंडलर किसी भी कॉलबैक के लिए सक्रिय कर देगा, लेकिन आप sender._postBackSettings.panelID का उपयोग फिल्टर करने के लिए कर सकते हैं जब आप अपने समारोह कहा जाता है चाहता हूँ।

अधिक नमूने:

+0

यह बहुत अच्छा है! इसके अलावा, अगर वहाँ कोई स्पष्ट पैनल (जैसे हो सकता है आप कुछ Telerik नियंत्रण पर्दे के पीछे UpdatePanels का उपयोग करता है का उपयोग कर रहे हैं) है, आप भी sender._postBackSettings.asyncTarget' सत्यापित करने के लिए करता है, तो वर्तमान पोस्टबैक एक आप देख रहे है उपयोग कर सकते हैं ' के लिये। –

13

अद्यतन पैनल के लिए अपनी पोस्टबैक के दौरान सर्वर कोड में, कुछ नई स्क्रिप्ट, कुछ इस तरह पेज में जोड़ने के लिए ClientScriptManager का उपयोग करें:

ClientScriptManager.RegisterStartupScript(
     typeof(page1), 
     "CssFix", 
     "javascriptFunctionName()", 
     true); 

एक नामित समारोह है कि तीसरे मैचों में अपने जावास्क्रिप्ट समाहित वहां तर्क दें, और पोस्टबैक लौटने पर इसे निष्पादित करना चाहिए।

11

तुम भी (जावास्क्रिप्ट) क्लाइंट पक्ष कोड में एक घटना हर बार एक UpdatePanel इस तरह समाप्त हो गया है करने के लिए बाध्य कर सकते हैं:

 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(){myFunction();}); 

तो इस मामले में मेरा कार्य(); हर बार एक अपडेटपेनल पोस्टबैक हुआ होगा। यदि पृष्ठ लोड होने पर आप इस कोड को निष्पादित करते हैं तो फ़ंक्शन सही समय पर कॉल किया जाएगा।

12

उसी कोड में कोड जोड़ें जिसे आपने अपना स्क्रिप्ट प्रबंधक रखा था।

पीछे कोड: यह आकर्षण की तरह काम करता है,

<script> 
    ///<summary> 
    /// This will fire on initial page load, 
    /// and all subsequent partial page updates made 
    /// by any update panel on the page 
    ///</summary> 
    function pageLoad(){ alert('page loaded!') } 
</script> 

मैं इसे कई बार इस्तेमाल किया है:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (ScriptManager1.IsInAsyncPostBack) 
    { 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("<script language='javascript' type='text/javascript'>"); 
     sb.Append("Sys.Application.add_load(func);"); 
     sb.Append("function func() {"); 
     sb.Append("Sys.Application.remove_load(func);"); 
     sb.Append("alert('I am Batman!');"); 
     sb.Append("}"); 
     sb.Append("</script>"); 
     ScriptManager.RegisterStartupScript(this, GetType(), "script", sb.ToString(), false); 
    } 
} 
69

सबसे आसान तरीका अपने जावास्क्रिप्ट कोड में MSAjax Pageload घटना का प्रयोग है। सबसे महत्वपूर्ण बात यह document.ready समारोह (जो पेज दस्तावेज़ ऑब्जेक्ट मॉडल (डोम के बाद केवल एक बार निष्पादित किया जाएगा) जावा स्क्रिप्ट कोड को निष्पादित करने के लिए तैयार है) के साथ यह भ्रमित न करें, फिर भी Pageload घटना हर बार अद्यतन पैनल निष्पादित हो जाएगा ताज़ा करता है।

स्रोत: Running script after Update panel AJAX asp.net

+3

कमाल! अद्यतन पैनल रीफ्रेश करते समय मैं जावास्क्रिप्ट निष्पादन को रखने के लिए एक लंबे समय से देख रहा हूं, आपके उत्तर के लिए धन्यवाद! – Shide

+1

बस एक परियोजना पर इस स्थिति के माध्यम से काम किया - यह मेरे लिए सबसे सरल और सबसे विश्वसनीय था। 'Add_pageLoaded' और' RegisterStartupScript' दृष्टिकोण कॉलबैक के माध्यम से ट्रैक और डीबग करना कठिन था, लेकिन 'पेज लोड' बस वर्क्स (टीएम) – brichins

+0

var firstload = 0; फ़ंक्शन पेज लोड() {if (firstload == 0) firstload = 1; अन्य {चेतावनी ('पोस्टबैक!'); } – mjb

संबंधित मुद्दे

 संबंधित मुद्दे