2012-01-07 22 views
5

Sayfada bir gönderim düğmem var.Raise Sunucu tarafı düğmesini tıklatın ajax çağrısı javascript'ten arama tıklayın

<asp:Button ID="btnSubmit" runat="server" Text="Save Test" OnClick="btnSubmit_Click" 
             OnClientClick="return ValidateSaveTest(this);" /> 

Javascript'te, tüm alanları doğrulayan ValidateSaveTest işlevi çağrılır.

function ValidateSaveTest(Sender) { 

      //do some validation, if fails return false from here. else move forward 

     var parameters = {}; 
     parameters["parametersName"] = $("#" + hidTestId).val(); 

     var succeededAjaxFn = function(result) { 
      if (result== true) { 
       var isNewVersion = confirm("Confirmation message"); 
       if(isNewVersion) 
       { 
         //Raise server side button click event. Dont call click side event anymore. 
         $("#" + "<%=btnSubmit.ClientID %>").click(); 
       } 
       return false; 
      } 

     } 
     var failedAjaxFn = function(result) { return false; } 

      //jquery ajax call 
     CallWebMethod("../Service.asmx", "IsTestUsed", parameters, succeededAjaxFn, failedAjaxFn); 

     //async call, always return false hence no postback from here. 
     //Need waiting unless ajax response is obtained. 
     return false; 
    } 

Ajax yanıtı alındığında javascript'ten sunucu tarafı düğmesi tıklama olayını yükseltmem gerekiyor. düğme kullanıcı tarafından tıklandığı takdirde

cevap

12

yapabilirsiniz gerekli JavaScript kodu almak ClientScript Yöneticisi'nin GetPostBackEventReference yönteminden:

Bir istemci etkinliğinde, sunucuya geri gönderilecek neden olmak için kullanılabilecek bir dize döndürür. Bu normalde onclick yazmak için kullanılır

<asp:linkButton> gibi kontrollere niteliklerini, ama siz de jQuery geri arama kullanabilirsiniz:

var succeededAjaxFn = function(result) { 
    //Raise server side button click event. Dont call click side event anymore. 
    <%= Page.ClientScript.GetPostBackEventReference(btnSubmit, String.Empty) %>; 
} 

yukarıda <%= %> blok aşağıdaki JavaScript yazacak sizin için:

__doPostBack('btnSubmit','') 

Hangi ASP.NET düğmenin tıklandığı düşünür ve böylece sunucu şekilde sunucuya formu geri yayınlayacağız sırayla btnSubmit_Click'un tarafı tetiklenir.

Bu yöntemi kullanarak, gerçek denetime bir C# referansı iletebileceğinizi unutmayın. Müşteri kimliği veya __doPostback() JavaScript işlevinin doğru adı ve bağımsız değişkenleri hakkında endişelenmeniz gerekmez. Bu yöntemi çağırdığınızda tüm bu ClientScriptManager tarafından halledilir.

+0

Çok teşekkür ederim, işe yaradı. İlk cevabımda msdn'ye başvurduğumda, anlamadım. Ama açıklamandan sonra. Çözüm sadece işe yaramadı, aynı zamanda neler olduğunu da anladı ... –

+0

Onclick etkinliği nasıl ortaya çıktı? Bu kodda ortaya çıkan Onclick etkinliğinden bahsetmiş miydin? –

+0

@AliForoughi Sunucu tarafı olayın nasıl tetikleneceğini açıklamak için cevabımı düzenledim, bu yardımcı olur mu? –

3

Bu bir postback tetiklemelidir başından

bu

__doPostBack('<%=btDemo.ClientID%>','OnClick'); 

Not Ekle çift çizgi deneyin

+2

Bu bir geri dönüş yapıyor, ancak düğmenin sunucu tarafı düğmesi tıklama olayını yükseltmiyor. –

+0

İstemci Kimliği benim için de çalışmadı, ancak UniqueID yaptı. Kodum SharePoint 2010 işaretlemesi karmaşası içinde dolanıyor ve bu özelliği kullanarak başka birinin bahsettiğini fark ettim. Ayrıca <% = Page.ClientScript.GetPostBackEventReference (this.SaveButton, string.Empty)%>; benim için de çalışıyor. – Andez

İlgili konular