2011-06-15 12 views
6

मैं बहुत तरह जावास्क्रिप्ट से एक आंशिक पोस्टबैक फोन कर रहा हूँ:ASP.NET UpdatePanel और जावास्क्रिप्ट __dopostback

function GetPolicyClick() 
    {"__dopostback('UpdatePanel1', 'PostCall')";} 

यह मैं क्या यह करने की जरूरत का 1/2 है। यह केवल मेरे अपडेटपैनल के लिए आंशिक पोस्टबैक कॉल करता है।

अब मुश्किल हिस्सा है। मैं अपने कोड में __dopostback के दूसरे तर्क को संदर्भित करने के लिए (किसी भी तरह) कोशिश कर रहा हूं। यह काम नहीं करता:

Private Sub UpdatePanel1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles UpdatePanel1.Load 

    Dim MyArg As String = Request("__EVENTARGUMENT") 

End Sub 

मैं सिर्फ एक खाली स्ट्रिंग मिलता है।

बेशक, जो मैं करने की कोशिश कर रहा हूं वह पूरी तरह से गलत हो सकता है (जैसा कि मैं बाकी सब कुछ एएसपी के साथ करने की कोशिश करता हूं)। मुझे संदेह है कि मेरा कोडबींड पैनल के बजाए पृष्ठ से घटना तर्क को पकड़ रहा है, लेकिन मुझे वास्तव में पता नहीं है, कोई विचार?

+1

आप की कोशिश की है Request.Form ("__ EVENTTARGET")? –

+0

वाह आदमी, मुझे यह कहना है कि मैंने इस साइट में रखी गई सभी पोस्टों में से एक को दो मोती उतरा। दोनों के लिए धन्यवाद !! –

उत्तर

11

आप अंदर कुछ मूल्य डाल करने के लिए चाहते हैं _ EVENTARGUMENT आप इस जावास्क्रिप्ट के साथ _doPostBack द्वारा प्रपत्र भेजने से पहले करना चाहिए ('UpdatePanel1', '') क्योंकि __EVENTTARGET छिपा क्षेत्र है और अपने HTML दस्तावेज़ में यह इस तरह दिखता है:

<input type="hidden" value="" id="__EVENTARGUMENT" name="__EVENTARGUMENT"> 

मैं इस तरह कुछ करने के लिए आप की सिफारिश: y तो

function setArgAndPostBack() { 
    var arg = document.getElementById('__EVENTARGUMENT'); 
    var arg = document.getElementById("__EVENTARGUMENT"); 
    arg.value = 'something you want to put to server'; 
    __doPostBack('UpdatePanel1', ''); 
} 

कहां jQuery का उपयोग यह होगा कम:

function setArgAndPostBack() { 
    $("#__EVENTARGUMENT").val('something you want to put to server'); 
    __doPostBack('UpdatePanel1', ''); 
} 

यह मैं अद्यतन पैनल के अंदर एक छिपी हुई फ़ील्ड डाल करने के लिए आप का सुझाव चाहते हैं काम नहीं करता है:

<asp:UpdatePanel runat="server" ID="UpdatePanel1"> 
    <ContentTemplate> 
     <asp:HiddenField ID="hdnData" value="" runat="server" /> 
     <!-- your content goes here --> 
    </ContentTemplate> 
</asp:UpdatePanel> 

और फिर जैसे ही काम करते हैं इसके बाद के संस्करण:

:

function setArgAndPostBack() { 
    //Here hidden field is filled with your data 
    $("#<%=hdnData.ClientID%>").val('something you want to put to server'); 
    __doPostBack('UpdatePanel1', ''); 
} 

पहले परिदृश्य में आप सर्वर साइड में __EVENTARGUMENT प्राप्त कर सकते हैं

पहले परिदृश्य आप ऐसा ही कुछ का उपयोग कर सकते काम नहीं करता है:

String args = hdnData.Value;//This works even in Page_Load function. 
+0

यह गलत है। '__doPostBack' अपने पहले और दूसरे तर्कों के साथ' __EVENTTARGET' और '__EVENTARGUMENT' को ओवरराइट करता है, इसलिए यह कॉल करने से पहले उन्हें सेट करने के लिए व्यर्थ (और भ्रामक) है। यहां एक छिपे हुए क्षेत्र की आवश्यकता नहीं है, या तो। बस '__doPostBack' के पैरामीटर का उपयोग करें। –

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