दिलचस्प पोस्ट
क्या grep केवल शब्द खोज पैटर्न से मेल खाते हैं? एक कैरेट्रांसफोर्म 3 डी का उपयोग करते हुए एक चौकोर आकार में एक आयताकार छवि को ट्रांसफ़ॉर्म करना एकाधिक AsyncTask के समानांतर निष्पादित करना SplitView फलक खोलने के लिए एक स्वाइप जेस्चर जोड़ना पायथन लैम्ब्डा एक लूप में गतिशील रूप से पीडीओ के साथ प्रश्नों का निर्माण कैसे करें हिमाचल प्रदेश: गिट की रिबेस जैसी रिबेस कैसे करें कैसे mysql डेटाबेस के लिए सुपर विशेषाधिकार जोड़ने के लिए? jQuery आईडी चयनकर्ता केवल पहले तत्व के लिए काम करता है PHP: पैरेंट क्लास से बाल क्लास का फ़ंक्शन कैसे कॉल करें मैं jQuery पर $ (दस्तावेज़) फ़ंक्शन को निष्पादित करने के लिए क्यों नहीं उपयोग कर सकता हूं। NSString तुलना को समझना सी # में सूची के पहले एन तत्वों को कैसे प्राप्त करें? क्यों करें: पहले और: छद्म तत्वों के बाद एक 'सामग्री' संपत्ति की आवश्यकता होती है? 64 बिट विंडो पर पायथन 32-बिट स्मृति सीमाएं

जावास्क्रिप्ट के साथ ASP.NET पोस्टबैक

मेरे पास कई छोटे div जो jQuery ड्रैगएबल का उपयोग करते हैं। इन divs को एक UpdatePanel में रखा जाता है, और ड्रैगनस्टॉप पर मैं _doPostBack() जावास्क्रिप्ट फ़ंक्शन का उपयोग करता _doPostBack() । जहां मैं पृष्ठों के फॉर्म से आवश्यक जानकारी निकालता हूं।

मेरी समस्या यह है कि जब मैं इस फ़ंक्शन को कॉल करता हूं, तो पूरे पृष्ठ पुनः लोड होता है लेकिन मैं केवल अपडेट पैनल को फिर से लोड करना चाहता हूं।

Solutions Collecting From Web of "जावास्क्रिप्ट के साथ ASP.NET पोस्टबैक"

यहाँ एक पूर्ण समाधान है

Asp.net पृष्ठ का संपूर्ण रूप टैग

 <form id="form1" runat="server"> <asp:LinkButton ID="LinkButton1" runat="server" /> <%-- included to force __doPostBack javascript function to be rendered --%> <input type="button" id="Button45" name="Button45" onclick="javascript:__doPostBack('ButtonA','')" value="clicking this will run ButtonA.Click Event Handler" /><br /><br /> <input type="button" id="Button46" name="Button46" onclick="javascript:__doPostBack('ButtonB','')" value="clicking this will run ButtonB.Click Event Handler" /><br /><br /> <asp:Button runat="server" ID="ButtonA" ClientIDMode="Static" Text="ButtonA" /><br /><br /> <asp:Button runat="server" ID="ButtonB" ClientIDMode="Static" Text="ButtonB" /> </form> 

पेज की कोड-बेहिंड क्लास की संपूर्ण सामग्री

 Private Sub ButtonA_Click(sender As Object, e As System.EventArgs) Handles ButtonA.Click Response.Write("You ran the ButtonA click event") End Sub Private Sub ButtonB_Click(sender As Object, e As System.EventArgs) Handles ButtonB.Click Response.Write("You ran the ButtonB click event") End Sub 
  • LinkButton यह सुनिश्चित करने के लिए शामिल है कि ग्राहक को __doPostBack जावास्क्रिप्ट फ़ंक्शन प्रदान किया गया है। बस बटन नियंत्रण होने से यह __do पोस्टबैक फ़ंक्शन को प्रस्तुत करने का कारण नहीं होगा। यह फ़ंक्शन अधिकांश एएसपी.एन.टी.एन.टी. पृष्ठों पर विभिन्न नियंत्रण रखने के आधार पर प्रदान किया जाएगा, इसलिए एक खाली लिंक बटन की आवश्यकता नहीं है

क्या चल रहा है?

दो इनपुट नियंत्रण ग्राहक को प्रदान किए जाते हैं:

 <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 
  • __EVENTTARGET तर्क 1 प्राप्त करता है
  • __EVENTARGUMENT तर्क 2 प्राप्त करता है

__do पोस्टबैक फ़ंक्शन इस तरह से प्रस्तुत किया गया है:

 function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } } 
  • जैसा कि आप देख सकते हैं, यह छुपाए गए आदानों के लिए मूल्य निर्दिष्ट करता है।

जब प्रपत्र प्रस्तुत / पोस्टबैक होता है:

  • यदि आपने सर्वर-कंट्रोल बटन का यूनिडाइड प्रदान किया है जिसका बटन-क्लिक-हैंडलर आप चलाना चाहते हैं ( javascript:__doPostBack('ButtonB','') , तो उस बटन के लिए बटन क्लिक हैंडल चलाया जाएगा।

क्या होगा अगर मैं एक क्लिक हैंडलर को चलाने के लिए नहीं चाहता, लेकिन इसके बजाय कुछ और करना चाहते हैं?

आप जो कुछ भी तर्क के रूप में चाहते हैं, उसे __doPostBack को पास कर सकते हैं

तब आप छुपा इनपुट मानों का विश्लेषण कर सकते हैं और तदनुसार विशिष्ट कोड चला सकते हैं:

 If Request.Form("__EVENTTARGET") = "DoSomethingElse" Then Response.Write("Do Something else") End If 

अन्य नोट

  • क्या होगा अगर मुझे नियंत्रण की आईडी पता नहीं है जिस पर क्लिक करेंडलर मैं चलाना चाहता हूं?
    • यदि यह ClientIDMode="Static" निर्धारित करने के लिए स्वीकार्य नहीं है, तो आप ऐसा कुछ कर सकते हैं: __doPostBack('<%= myclientid.UniqueID %>', '')
    • या: __doPostBack('<%= MYBUTTON.UniqueID %>','')
    • यह जावास्क्रिप्ट में नियंत्रण के अद्वितीय आईडी को इंजेक्ट करेगा, क्या आप इसे चाहते हैं

प्रति फ़ैरोह: पैनल नाम बदलते ही पृष्ठ / घटक में इसका उपयोग करें

 <script type="text/javascript"> <!-- //must be global to be called by ExternalInterface function JSFunction() { __doPostBack('<%= myUpdatePanel.ClientID %>', ''); } --> </script> 

जबकि फिएरो का समाधान सैद्धांतिक रूप से ध्वनि लगता है, मुझे इस समस्या का एक दूसरा समाधान भी मिला है। DoPostBack फ़ंक्शन के लिए एक पैरामीटर (ईवेंट लक्ष्य) के रूप में UpdatePanels आईडी को पारित करके अपडेट पैनल वापस पोस्ट करेगा, लेकिन संपूर्ण पृष्ठ नहीं।

 __doPostBack('myUpdatePanelId','') 

* नोट: दूसरा पैरामीटर इसके अलावा ईवेंट एग्रीज़ के लिए है

उम्मीद है कि यह किसी को मदद करता है!

संपादित करें: तो ऐसा लगता है कि यह सलाह का यही टुकड़ा ऊपर दिया गया था क्योंकि मैं टाइप कर रहा था 🙂

अगर किसी के पास इस के साथ परेशानी हो रही है (जैसा मैं था), आप इसके लिए UseSubmitBehavior = "false" विशेषता को जोड़कर एक बटन के लिए पोस्टबैक कोड प्राप्त कर सकते हैं। यदि आप बटन के प्रदान किए गए स्रोत की जांच करते हैं, तो आपको सटीक जावास्क्रिप्ट दिखाई देगा जो आपको निष्पादित करने की आवश्यकता है। मेरे मामले में यह आईडी के बजाय बटन के नाम का प्रयोग कर रहा था।

क्या आपने __doPostBack फ़ंक्शन पर अपडेट पैनल के क्लाइंट आईडी को पास करने की कोशिश की है? मेरी टीम ने एक अपडेट पैनल को ताज़ा करने के लिए यह किया है और जहां तक ​​मुझे पता है कि यह काम किया है।

 __doPostBack(UpdatePanelClientID, '**Some String**'); 

आप _doPostBack() कॉल नहीं कर सकते क्योंकि यह फ़ॉर्म के _doPostBack() मजबूर करता है आप UpdatePanel पर PostBack अक्षम क्यों नहीं करते हैं?

सबसे पहले, अद्यतन पैनल का उपयोग न करें। वे दूसरी सबसे बुरी चीज हैं जो माइक्रोसॉफ्ट ने वेब डेवलपर के लिए कभी बनाया है।

दूसरा, यदि आप अद्यतन पैनल का उपयोग करना आवश्यक है , तो कंडीशियल के लिए UpdateMode संपत्ति को सेट करने का प्रयास करें। फिर एक asp को ट्रिगर जोड़ें: छिपा हुआ नियंत्रण जो आप पेज पर जोड़ते हैं। ट्रिगर के रूप में परिवर्तन ईवेंट को असाइन करें। आपके ड्रैगस्टॉप इवेंट में, छिपा हुआ नियंत्रण का मूल्य बदलें।

यह निहित नहीं है, लेकिन सिद्धांत ध्वनि लगता है … अगर यह काम नहीं करता है, तो आप एएसपी के साथ एक ही चीज़ की कोशिश कर सकते हैं: बटन, बस डिस्प्ले सेट करें: उस पर कोई भी शैली नहीं है और बदलाव की घटना के बजाय क्लिक ईवेंट का उपयोग करें।