2009-08-05 9 views
9

में रनटाइम पर पुष्टिकरण संवाद मेरे पास एक साधारण सामग्री प्रबंधन प्रणाली है जो पेजगेम और संस्करण द्वारा पृष्ठों को संग्रहीत करती है। सहेजें पर क्लिक करने के बाद, मेरा कोड (सर्वर पक्ष) Pagename/संस्करण के अस्तित्व के लिए जांचता है।एएसपीनेट

यदि यह मौजूद है तो मैं एक पुष्टिकरण संवाद बॉक्स प्रदर्शित करना चाहता हूं, जो उपयोगकर्ता को यह पुष्टि करने के लिए कहता है कि वर्तमान पेगेनेम/संस्करण को प्रतिस्थापित किया जाना चाहिए या नहीं।

इसे पूरा करने का सबसे आसान तरीका क्या है? धन्यवाद।

उत्तर

7

मैं पिछले दोनों उत्तरों की सराहना करता हूं और वे सहायक थे लेकिन बिल्कुल वही नहीं जो मैं ढूंढ रहा था। प्रतिक्रियाओं पर विचार करने और अधिक शोध करने के बाद मैं अपना समाधान पोस्ट कर रहा हूं ताकि शायद यह किसी और की मदद करे।

बटन कोड:

<asp:Button ID="btnSave" OnClick="btnSaveClick" runat="server" Text="Save" OnClientClick="return CheckForVersion()" /> 

जावास्क्रिप्ट:

<script language="javascript"> 
    function CheckForVersion() { 
     PageMethods.CheckForVersion(aspnetForm.ctl00$ContentPlaceHolder1$ddlPageName2.value, aspnetForm.ctl00$ContentPlaceHolder1$txtContentName2.value, OnSucceeded, OnFailed); 
     return false; 
    } 

    function OnSucceeded(results) { 
     if(results) { 
      //version exists so prompt user 
      if(confirm("Version already exists. Do you want to overwrite?")) { 
       __doPostBack('ctl00$ContentPlaceHolder1$btnSave',''); 
      } 
     } 
     else 
     { 
      //version does not exist so save it without prompting user 
      __doPostBack('ctl00$ContentPlaceHolder1$btnSave',''); 
     } 

    } 

    function OnFailed(error) { 
     // handle pagemethod error 
     alert(error.get_message()); 
    } 

</script> 

सी का उपयोग कर # सबसोनिक 2.1:

[WebMethod] 
    public static bool CheckForVersion(string pageName, string versionName) 
    { 
     PageContentCollection pages = new PageContentCollection().Where("pageName", pageName).Where("versionName", versionName).Load(); 
     if (pages.Count > 0) 
      return true; 
     else 
      return false;    
    } 
13
<asp:Button OnClientClick="return confirm('Are you sure you want to go?');" 
      Text="Confirm" runat="server" onclick="Unnamed1_Click" /> 

यदि वे ठीक क्लिक करें, सर्वर ऑनक्लिक ईवेंट क्या होगा, अगर वे रद्द करें क्लिक करें, ऐसा लगता है वे भी, बटन दबाएँ नहीं था ज़ाहिर है, आप हमेशा रद्द भाग को functionallity जोड़ सकते हैं हो जाएगा।

हो सकता है कि कुछ इस तरह:

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 
     function CompareConfirm() 
     { 
      var str1 = "abc"; 
      var str2 = "def"; 

      if (str1 === str2) { 
       // your logic here 
       return false; 
      } else { 
       // your logic here 
       return confirm("Confirm?"); 
      } 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Button OnClientClick="return CompareConfirm();" 
      Text="Confirm" runat="server" onclick="Unnamed1_Click" /> 
    </div> 
    </form> 
</body> 
</html> 
+0

मुझे लगता है कि वह बल्कि जावास्क्रिप्ट में सर्वर साइड पर की तुलना करना चाहते जोड़ें। –

0

ग्राहक के लिए पृष्ठ को प्रदर्शित करने से पहले निशान लगा दें। फिर एक हैंडलर (क्लाइंट साइड पर, उदाहरण के लिए जावास्क्रिप्ट) को सेव-बटन या फॉर्म में संलग्न करें जो पुष्टिकरण बॉक्स प्रदर्शित करता है (लेकिन केवल तभी सहेजने के परिणामस्वरूप प्रतिस्थापन परिणाम)।

+0

उपयोगकर्ता टेक्स्टबॉक्स में पेजनाम/संस्करण नाम दर्ज करता है, इसलिए मुझे यकीन नहीं है कि मैं प्रतिपादन से पहले कैसे जांच करूंगा। मुझे लगता है कि मैं चेक के लिए जावास्क्रिप्ट में एक पृष्ठ विधि का उपयोग कर सकता हूं लेकिन क्या यह सबसे अच्छा तरीका है? –

+0

यदि आप केवल दो तारों की जांच कर रहे हैं, तो आप इसे जावास्क्रिप्ट में कर सकते हैं, जेएस में एक तुलनाकॉन्फर्म() विधि करें और इसे एएसपी पर कॉल करें: बटन ऑनक्लिएंटक्लिक ईवेंट, दो तारों की तुलना करें और विधि को पुष्टि करें()। मैं नीचे अपने जवाब में थोड़ा और विस्तार से बताऊंगा। – Carlo

1

एक वैकल्पिक, सरल दृष्टिकोण है जो AJAX की आवश्यकता नहीं है अनुमति देने के लिए किया जाएगा पोस्ट-बैक सामान्य के रूप में, फिर कोड-बैक में, अपने चेक करें।

यदि उपयोगकर्ता की पुष्टि की आवश्यकता है, तो उपयोगकर्ता को उसी पृष्ठ पर वापस लौटें, लेकिन एक अतिरिक्त पैनल को दृश्यमान बनाएं और मूल 'सहेजें' बटन को छुपाएं।

इस अतिरिक्त पैनल में, अपना संदेश किसी अन्य ओके/रद्द करें बटन के साथ प्रदर्शित करें। जब उपयोगकर्ता इस ओके बटन पर क्लिक करता है, तो सहेजें!

0

उदाहरण Hiddenfield1

के लिए अपने पृष्ठ के लिए एक छिपी हुई फ़ील्ड जोड़ने

तो इस समारोह

public bool Confirm(string MSG) 
{ 
    string tmp = ""; 
    tmp = "<script language='javascript'>"; 
    tmp += "document.getElementById('HiddenField1').value=0; if(confirm('" + MSG + "'))   document.getElementById('HiddenField1').value=1;"; 
    tmp += "</script>"; 
    Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "ConfirmBox", tmp); 
    if(HiddenField1.Value.Trim()=="0") return false; 
    return true; 
} 
+0

मैंने आईई 9 और एफएफ 26 पर इस तकनीक की कोशिश की और मुझे कोई पुष्टि संवाद दिखाई नहीं दे रहा है। कोई त्रुटि नहीं, बस कोई पुष्टि संवाद नहीं है। इस तरह के मुद्दे के लिए सबसे आम कारण क्या है? – Tevya