2009-08-16 10 views
5

मेरी पृष्ठ पर मैं निम्नलिखित उपयोगकर्ता नियंत्रण हो गया।ASP.NET उपयोगकर्ता नियंत्रण और jQuery संवाद

तो जब मैं अपने पृष्ठ पर एक बटन दबाता हूं, तो यह इस संपत्ति को यूसी पर कॉल करता है, और यूसी डेटासेट से डेटा के साथ अपडेट हो जाता है।

अभी तक इतना अच्छा है। समस्या तब उत्पन्न होती है जब मैं यूसी को एक jQuery यूआई संवाद होना चाहता हूं।

सबसे पहले मैं संवाद बनाने के लिए:

$(document).ready(function() { 
    $('.editFormDialog').dialog({ 
     autoOpen: false, 
     height: 700, 
     width: 780, 
     modal: true, 
     bgiframe: true, 
     title: 'Rediger', 
     open: function(type, data) { 
      $(this).parent().appendTo("form"); 
      $(this).css('display', 'block'); 
     } 
    }); 
}); 

और मैं यह wan't एक बटन धक्का पर खोलने के लिए (यह एक ASP.NET बटन, सादे HTML नहीं है):

$('#btnEdit').live('click', function() { 
    $('.editFormDialog').dialog('open'); 
}); 

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

क्या आपको कोई विचार है?

सहायता की बहुत सराहना की जाएगी!

उत्तर

1

वास्तव में क्या होता है जब आप "संपत्ति को कॉल करते हैं" (मुझे लगता है कि आपका मतलब यह एक विधि है)? क्या पृष्ठ एक पोस्टबैक करता है? यदि ऐसा है, तो जब आप परिदृश्य में jQuery को मिश्रित करते हैं तो शायद पोस्टबैक अवरुद्ध हो रहा है?

+0

मैं अगला डेटा प्राप्त करने के लिए एक बटन क्लिक करता हूं। एक पोस्टबैक होता है। यूसी में संपत्ति "editUC.EditData = ds;" की तरह सेट की गई है।पृष्ठ नए डेटा के साथ आता है। अब जब मैं एक और बटन क्लिक करता हूं जो संवाद पॉपअप बनाता है, तो यूसी में अभी भी डिफ़ॉल्ट डेटा होता है। जैसे कि उसने अपने डेटासोर्स में बदलाव पंजीकृत नहीं किए हैं। लेकिन अगर मैं संवाद के बाहर यूसी प्रदर्शित करता हूं, तो यह पूरी तरह से काम करता है। –

+0

यह अजीब लगता है: क्या आप अपना कुछ स्रोत कोड पोस्ट कर सकते हैं? –

+0

यह सब एक अद्यतन पैनल के अंदर रखा गया है। क्या यह संवाद हो सकता है, यह अद्यतन पैनल के बाहर "बाहर ले जाया गया" है? हो सकता है कि हर बार जब यह मधुमक्खियों को खोला जाए तो संवाद बनाने के लिए एक और समाधान हो सकता है और फिर इसे बंद करने पर इसे हटा दें? बेशक एचटीएमएल तत्वों को सही जगह पर रखें। लेकिन मैं यह कैसे कर सकता हूं? –

0

चूंकि आप अपडेट पैनल का उपयोग कर रहे हैं, तो आप पृष्ठ में जावास्क्रिप्ट को कॉल कैसे इंजेक्शन दे रहे हैं? मैं पूछता हूं, क्योंकि केवल एक ही तरीका है जो आंशिक पोस्टबैक पर ठीक से काम करता है: ScriptManager.RegisterStartupScript()। यह जावास्क्रिप्ट कोड को कार्य करने की अनुमति देता है जैसे पृष्ठ लोड किया गया था। बेशक किसी अन्य ऑनलोड जावास्क्रिप्ट को भी बुलाया जा सकता है, जिसके परिणामस्वरूप आप जो व्यवहार देख रहे हैं।

तो,

  1. सुनिश्चित करें कि आपके जावास्क्रिप्ट स्क्रिप्ट प्रबंधक के साथ इंजेक्ट किया जाता है बनाते हैं।
  2. जावास्क्रिप्ट के बारे में सुनिश्चित केवल बिट्स कि आप क्रियान्वित कर रहे हैं

एक आंशिक पोस्टबैक के बाद पर अमल करना चाहते हैं वहाँ भी डेटा स्रोत को बदलने के लिए एक वेब सेवा के साथ एक ajax नियंत्रण में अपने यूसी मोड़ की संभावना है । तब कोई और आंशिक पोस्टबैक नहीं होता है, जो आमतौर पर पृष्ठ की प्रतिक्रिया में सुधार करता है।

2

मुझे इस मुद्दे का समाधान मिला। ऐसा लगता है कि जब आप प्रपत्र को संलग्न, आपको यह सुनिश्चित कोड के इस स्निपेट jQuery दस्तावेज़ के अंदर तैयार है बनाने की जरूरत है:

jQuery(document).ready(function() { 
    $("#<%=myFamilyGrid.ClientID %>").tablesorter({ 
     sortList: [[0, 1]] 
    }) 
     .tablesorterPager({ container: $("#pager") }); 


    $("#dialog1").dialog({ 
     modal: true, 
     height: 370, 
     width: "350px", 
     autoOpen: false, 
     bgiframe: false, 
     zIndex: 3999 
    }); 

    $("#dialog1").parent().appendTo($("form:first")); 
}); 

आशा:

$("#dialog1").parent().appendTo($("form:first")); 

तो पूरी बात इस तरह दिखना चाहिए इससे मदद मिलती है!

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