2010-08-16 15 views
11

का उपयोग कर मैन्युअल रूप से अद्यतन पैनेल अपडेट करें क्या जावास्क्रिप्ट या jQuery का उपयोग कर मैन्युअल रूप से अपडेट पैनेल अपडेट करना संभव है?जावास्क्रिप्ट या jQuery

मेरे पास मेरे पृष्ठ के शीर्ष पर एक टेक्स्टबॉक्स है। जब कोई उपयोगकर्ता उस टेक्स्टबॉक्स को छोड़ देता है तो मैं कुछ सर्वर कोड (यह मेरे डेटाबेस में एक रिकॉर्ड जोड़ देगा) को चलाने के लिए चाहता है, फिर पेज के निचले हिस्से में मेरे पास एक अपडेटपेनल है जो ताज़ा हो जाएगा। UpdatePanel एक GridView जो UpdatePanel में एक छिपा बटन बनाने के लिए रिकॉर्ड जोड़)

उत्तर

16

बस इस जावास्क्रिप्ट फोन समारोह। यहां UpdatePanel1 अपडेट पैनेल 1 आईडी

<script type="text/javascript"> 

      var UpdatePanel1 = '<%=UpdatePanel1.ClientID%>'; 

      function ShowItems() 
      { 
       if (UpdatePanel1 != null) 
       { 
        __doPostBack(UpdatePanel1, ''); 
       } 
      }  

     </script> 
11

मुझे लगता है कि मैं अपने जवाब मिल गया के लिए एक प्रवेश करना होगा ... किया है तो फोन

__doPostBack('<%= Button.ClientID %>',''); 
+1

धन्यवाद। इससे मेरा काम बनता है। – cocojiambo

+1

यह मेरे लिए भी काम करता है। !!! – Aruna

2

ठीक है, मेरे मामले में उत्तर अद्वितीय आईडी का उपयोग था। क्लाइंट आईडी काम नहीं किया।

__doPostBack("<%=btnTest.UniqueID %>", ""); 

यह पूरी तरह से काम करता है। मुझसे मत पूछो क्यों।

1

async पोस्टबैक के लिए समारोह बनाएँ:

function __doPostBackAsync(eventName, eventArgs) { 
     var prm = Sys.WebForms.PageRequestManager.getInstance(); 

     if (!Array.contains(prm._asyncPostBackControlIDs, eventName)) { 
      prm._asyncPostBackControlIDs.push(eventName); 
     } 

     if (!Array.contains(prm._asyncPostBackControlClientIDs, eventName)) { 
      prm._asyncPostBackControlClientIDs.push(eventName); 
     } 

     __doPostBack(eventName, eventArgs); 
    } 

कॉल इस समारोह जहां जरूरत है (क्लिक करें घटना में, लोड घटना, ...):

__doPostBackAsync("UpdatePanel1", ""); 

codebehind Page_Load जांच अतुल्यकालिक पोस्टबैक में और अद्यतन वांछित UpdatePanel:

if (scriptManager.IsInAsyncPostBack) 
{ 
     if (Request["__EVENTTARGET"] == UpdatePanel1.ID) 
     { 
     ... 

     //Do update 
     UpdatePanel1.Update(); 
     } 
} 
-1

ASPX:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel1_OnLoad" > ... 

codebehind:

protected void UpdatePanel1_OnLoad(object sender, EventArgs e) 
{ 
    var rawArguments = Page.Request["__EVENTARGUMENT"]; 
    if(rawArguments != null) 
    { 
     var arguments = HttpUtility.ParseQueryString(rawArguments); 

     switch (arguments["EventName"]) 
     { 
      case "Event1": 
       var parameter1Value = arguments["parameter1"]; 
       var parameter2Value = arguments["parameter2"]; 
       break; 
     } 
    } 
} 

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

function updatePanelPartialPostback(updatepanelId, eventName, parameters) { 
    var parametersParsed = "EventName=" + eventName + "&"; 

    for (var propertyName in parameters) { 
     parametersParsed += propertyName + '=' + parameters[propertyName] + '&'; 
    } 

    __doPostBack(updatepanelId, parametersParsed); 
} 


updatePanelPartialPostback('<%= UpdatePanel1.ClientID %>', 'Event1', { parameter1: 'value1', parameter2: 'value2' }); 
0

तुम बस फोन नियंत्रण डायन आप अपने UpdatePanel में शुरू हो रहा पर परिवर्तन() की जरूरत है।

उदाहरण के लिए:

<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="updatePanel1" ChildrenAsTriggers="True"> 
    <ContentTemplate> 
     <asp:DropDownList ID="ddl" runat="server" Visible="true" AutoPostBack="true" CssClass='someClass' /> 
    </ContentTemplate> 
    <Triggers> 
    <asp:AsyncPostBackTrigger ControlID="ddl" EventName="SelectedIndexChanged" /> 
    </Triggers> 
    </asp:UpdatePanel 


<script>   
    $(".someClass").change(); 
</script> 
0

यह मेरे लिए काम करता है:

<asp:UpdatePanel id="pnl" UpdateMode="Conditional" runat="server"> 
<contentemplate> 
    <div>...your content...</div> 
    <div style="display: none; line-height: 0pt;"> 
     <asp:Button id="btnUpdate" runat="server" UseSubmitBehavior="false" /> 
    </div> 
</contentemplate> 
</asp:UpdatePanel> 

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

function doUpdate() 
{ 
    var btn = document.getElementById("<%#= btnUpdate.ClientID %>"); 
    if(btn != null) { btn.click(); } 
} 
8

हालांकि एक पुराने सवाल है, मैं इसे एक और समाधान का उल्लेख हकदार लगता है ।

यदि आप छिपा बटन या भ्रमित __doPostBack पर भरोसा नहीं करना चाहते हैं, तो "क्लाइंटस्क्रिप्ट" का विकल्प है।GetPostBackEventReference ", इस पर वर्णित है (वैसे ही नहीं बल्कि पुराने, लेकिन अभी भी महान) पेज:

http://www.4guysfromrolla.com/articles/033110-1.aspx

संक्षेप में, अपने UpdatePanel इस तरह घोषित किया जाता है, तो:

<asp:UpdatePanel ID="MyUpdatePanel" runat="server">...</UpdatePanel> 

तो जावास्क्रिप्ट में आप कॉल कर सकते हैं स्क्रिप्ट है कि इस सर्वर साइड कोड से उत्पन्न होता है:

ClientScript.GetPostBackEventReference(MyUpdatePanel, "") 
में

तो अपने aspx पृष्ठ पर आप कुछ इस तरह हो सकता है:

function MyJavaScriptFunction(){ 
    doSomeStuff(); 
    <%=ClientScript.GetPostBackEventReference(MyUpdatePanel, "")%> 
} 

<% और%> के बीच कोड, एक वास्तविक javascript कॉल से बदल दिया जाएगा जब पेज पार्स किया गया है ताकि आप स्रोत देख कर उस पर देख सकते हैं अपने ब्राउज़र में पेज का कोड।

यह अन्य उत्तरों की तुलना में आसान नहीं हो सकता है, लेकिन मैं इसे पसंद करता हूं क्योंकि यह कोई अतिरिक्त तत्व नहीं पेश करता है और __doPostBack हैक की तरह लगता है। :-)

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