2012-11-22 8 views
6

प्राप्त करें मैं एक एएसपीनेट एप्लिकेशन विकसित कर रहा हूं और मुझे पीछे दिए गए कोड पर एक पुष्टिकरण संवाद बॉक्स कॉल करने की आवश्यकता है। और उसके बाद, मुझे उपयोगकर्ता के क्लिक को प्राप्त करने की आवश्यकता है (यदि उसने ठीक या रद्द किया है)।पीछे कोड पर एक पुष्टिकरण संवाद बॉक्स को कॉल करना और चुने गए विकल्प

यदि उसने संवाद के ठीक बटन पर क्लिक किया है, तो मुझे उस कोड को जारी रखना जारी रखना चाहिए जहां मैंने संवाद को कॉल करने से पहले रोक दिया था।

इस समस्या को हल करने के लिए मैंने सोचा था कि एएसपीएक्स को टाइप बटन के इनपुट में डाल दिया गया है, और इसकी शैली को दृश्यता में सेट करें: छुपाएं। इसलिए, जब उपयोगकर्ता ओके बटन पर क्लिक करते हैं तो प्रोग्राम इस छिपे हुए बटन को कॉल करेगा जो एक ऐसी विधि को कॉल करेगा जो नौकरी बंद रखेगा।

मैं अपना कोड पोस्ट करूंगा, मुझे उम्मीद है कि इससे मदद मिल सकती है।

नीचे दिया गया कोड मेरे कोड पर है, और यह पुष्टि संवाद को कॉल करता है।

System.Web.UI. 
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage + "')){document.getElementById(\'<%=btnSave.ClientID%>\').click();}", true); 

नीचे दिया गया कोड मेरे एएसपीएक्स पर है, यह "छुपा" बटन है।

<input style="visibility:hidden;" id="btnSave" runat="server" onclick="btnSave_Click"/> 

मुझे नहीं पता कि क्यों काम नहीं कर रहा है। पुष्टि संवाद बॉक्स के बटन ओके पर क्लिक करने के बाद मुझे प्राप्त त्रुटि निम्न है: माइक्रोसॉफ्ट जेस्क्रिप्ट: माइक्रोसॉफ्ट जेस्क्रिप्ट: 'document.getElementByID (...)' é nulo ou não é um objeto

मैं ब्राजील से हूं इसलिए त्रुटि पुर्तगाली में है, अंग्रेजी में इसका अनुवाद कुछ ऐसा है:

"माइक्रोसॉफ्ट जेस्क्रिप्ट पर एक रनटाइम त्रुटि आई। दस्तावेज़ .getElementByID (...) 'शून्य है या नहीं है ऑब्जेक्ट "

मैं पृष्ठ के एचटीएमएल कोड पर एक नज़र डालता हूं और मुझे लगता है कि बटन वहां नहीं है।

शायद ऐसा इसलिए है क्योंकि मैं एक अद्यतन पैनेल का उपयोग कर रहा हूं, लेकिन जब मैंने इसे हटा दिया (केवल परीक्षणों के लिए, मुझे अद्यतन पैनल का उपयोग करना होगा), वही त्रुटि दिखाई दे रही है, और इस समय बटन पृष्ठ के HTML कोड पर था ।

उत्तर

0

मैं

$(\"#ctl00_body_btnSave\").click(); 

से भाग

document.getElementById(\'<%=btnSave.ClientID%>\').click(); 

की जगह समस्या हल मैं भी एक एएसपी द्वारा इनपुट तत्व की जगह: बटन।

एक नज़र कैसे मेरे कोड अब पीछे मेरी कोड पर है दें:

System.Web.UI. 
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage+ "')){$(\"#" + btnSave.ClientID + "\").click();}", true); 

और मेरे aspx पर:

<asp:Button id="btnSave" Width="0px" Text="" runat="server" onclick="btnSave_Click"/> 

widht = "0px" और पाठ के उपयोग = "" करने के लिए छुपा बटन की सिफारिश नहीं की जाती है, लेकिन मैंने उपयोग किया क्योंकि इससे मुझे समस्याएं नहीं आतीं। यह एक सीएसएस क्लास के उपयोग की सिफारिश की जाती है जो इसे छिपाने में मदद करती है।

तो, यदि उपयोगकर्ता ऑपरेशन की पुष्टि करता है, तो यहां तक ​​कि btnSave_Click भी कहा जाता है।

सभी उत्तरों के लिए धन्यवाद।

+0

पोस्ट करूंगा, जब आप प्लेसहोल्डर जैसे किसी अन्य नियंत्रण में अपना बटन ले जाते हैं, तो आप उसी समस्या में भाग लेंगे, क्योंकि क्लाइंट आईडी अलग हो जाएगा। मैं अभी वास्तविक समाधान के साथ आया हूं, अपडेट के लिए मेरा उत्तर देखें – Darren

+0

आप सही हैं। मैं उपरोक्त समाधान को अद्यतन करता हूं। अभी भी काम कर रहा है और अब बटन सुरक्षित है अगर बटन दूसरे नियंत्रण में स्थानांतरित हो जाता है। आपके सुझाव के लिए धन्यवाद। – Fernando

+0

आप 'ClientIDMode =" स्टेटिक "का उपयोग कर सकते हैं (देखें [दस्तावेज़ीकरण] (http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx))। – nrodic

1

अंधेरे में एक स्टैब।

आपके कोड-पीछे में आपने btnSave.visible = false; सेट किया है? यदि ऐसा है, तो यह बटन को HTML पर प्रस्तुत करने से रोक देगा।

इसके अलावा, क्या कोई कारण है कि आप runat="server" के साथ HTML के मिश्रण के बजाय एएसपी: बटन नियंत्रण का उपयोग नहीं कर रहे हैं?

अंत में, यह आपके <input....

अद्यतन पर type='button' के लिए मदद मिल सकती है

समस्या आप एक इनलाइन टैग document.getElementById(\'<%=btnSave.ClientID%>\')

अपने कोड में

लागू करने के लिए हो सकता है <%=btnSave.ClientID%> करता है की कोशिश कर रहे है अभी तक अस्तित्व में नहीं है

आपका कोड उस समय को तोड़ देगा जब आप अपना बटन किसी अन्य सर्वर नियंत्रण में डाल देंगे, क्योंकि ग्राहक अलग हो जाएगा।

यह करने के लिए कोड में परिवर्तित करें:

 document.getElementById('" + btnSave.ClientID + "') 

और यह काम करेंगे, जहां आप बटन है की परवाह किए बिना।

+0

हाय डैरेन, उत्तर के लिए धन्यवाद। मैंने कई बार जांच की और एक भी लाइन नहीं है जहां मैं अपने कोड पर इस बटन पर वापस आ गया हूं। मैंने एक एएसपी का उपयोग करने की कोशिश की: इनपुट को आज़माने से पहले बटन, दोनों काम नहीं कर पाए और एक ही त्रुटि वापस कर दिया। जब मैं इसे कॉपी और पेस्ट करता हूं तो मैं अपने टैग पर विशेषता प्रकार = "बटन" डालना भूल गया था, मैंने टाइप = "सबमिट" करने के लिए इसे कुछ मिनट पहले हटा दिया था, जो काम नहीं करता था। मैं अन्य शॉट्स की कोशिश कर रहा हूं और यदि मैं समस्या हल करता हूं तो मैं यहां पोस्ट करूंगा। एक बार फिर धन्यवाद। – Fernando

+0

क्या मैं स्पष्टीकरण दे सकता हूं, आप कहते हैं कि जब आप स्रोत देखते हैं तो यह बटन प्रस्तुत नहीं किया जाता है? – Darren

+0

हाय मैन, मैं समस्या हल करता हूं। तुम्हारी सहायता सराहनीय है। मैं समाधान पोस्ट करूंगा – Fernando

0

एक बार आपका पृष्ठ ब्राउज़र में प्रस्तुत किया गया है, तो उस पर राइट क्लिक करें, और "स्रोत देखें" कहें। एचटीएमएल की जांच करें और अपना छुपा बटन ढूंढने का प्रयास करें, अगर आपको लगता है, तो अपने स्टेटमेंट getElementById(\'<%=btnSave.ClientID%>\') में अपनी आईडी का उपयोग करें। यदि आपको अपना बटन नहीं मिलता है, तो संभवतः आपने अपने कोड से कहीं भी झूठ बोलने की अपनी दृश्यता निर्धारित की है, इसे हटा दें, उपर्युक्त प्रक्रिया का दोबारा पालन करें और आपको ठीक होना चाहिए।

+0

हाय पटिल, मैं समस्या का समाधान करता हूं। चलो, आपकी मदद के लिए धन्यवाद। मैं समाधान – Fernando

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