2016-10-25 23 views
0

Ich habe eine Methode im Code hinter meiner Aspx-Seite, ich muss zwei Methoden von Javascript aufrufen, das Problem, das ich habe, ist, dass ich versuchte zu tun es mit einer JSON-Anfrage und einem WebMethod, aber diese Methode muss statisch sein und die Seitenkomponenten und andere Methoden können nicht von dieser Methode aus aufgerufen werden.So rufen Sie eine nicht-statische Methode von Aspx

Ich habe versucht, so etwas wie:

JavaScript-Funktion

function Func(Value) { 
     var conf=confirm('Sure? '+valor) 
     if (conf==true) 
     { 
     BlockAction(); 
     } 
    } 
     function BlockAction() {  
       $.ajax({ 
       type: "POST", 
       url: 'frmVentaTelefonica.aspx/BlockAction', 
       data: "", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        $("#divResult").html("success"); 
       }, 
       error: function (e) { 
        $("#divResult").html("Something Wrong."); 
       } 
      })}; 

-Code-behind-Code:

[WebMethod]        
    public static void BlockAcction() 
    { 
     try 
     { 
      frmVentaTelefonica venta = new frmVentaTelefonica();  
      venta.ConsultarVentaTelefonica(); 
      venta.ImprimirTiquetes(); 
     } 
     catch (Exception e) 
     {     
      throw; 
     } 
    } 

Ich möchte diese beiden Methoden rufen, wenn die Bestätigungs wahr ist.

Update: Bedürftig zwei Methoden wie diese Zugriffe:

public void ConsultarVentaTelefonica() 
     { 
      DatosImpresion = new List<Impresion>(); 
      IServicioVentas servicioVentas; 
      servicioVentas = SATWebServiceLocator<IServicioVentas>.ObtenerServicio(); 
      string Tiquetes = string.Empty; 
      foreach (GridDataItem dataItem in gridInfoVentaTelefonica.MasterTableView.Items) 
      { 
       if ((dataItem.FindControl("CheckBox1") as CheckBox).Checked) 
       { 
        Tiquetes = Tiquetes + (dataItem["Tiquete"]).Text + ","; 
       } 
      } 
      Tiquetes = Tiquetes.TrimEnd(Tiquetes[Tiquetes.Length - 1]); 
      Tiquetes = " " + Tiquetes + " "; 
      DataSet dsResultado = servicioVentas.EntregaTelefonica(sessionR8A.Turno.IdTurno, Tiquetes); 
      if (dsResultado.Tables.Count > 0 && dsResultado.Tables[0].Rows.Count > 0) 

Gerade sie laufen, wenn wahr ist, drucken Sie diese Methoden Update in der Datenbank und ein Ticket (erstes Gitter Prüfpunkte lesen)

+0

Bitte erläutern Sie das Problem genauer. Warum müssen Sie auf Seitenkomponenten aus dem Code zugreifen, der dahinter steht? Auf was genau willst du zugreifen? Warum übergeben Sie nicht einfach die von Ihnen benötigten Werte in die BlockAction-Methode? –

+0

BEWEGEN VORWÄRTS. Wir sind im Jahr 2016. Verwenden Sie WebAPI !! –

+0

Ich weiß, ist alt und möchte wirklich auf neue Technologien aktualisieren. – Jmperez

Antwort

0

Wenn Sie versuchen, die UI-Steuerelemente zu aktualisieren oder ihre Werte zu lesen, beschreiben Sie das UpdatePanel-Steuerelement. Eine Seitenwebmethode kann kein Steuerelement aktualisieren und die Benutzeroberfläche aktualisieren (außer über JavaScript). Wenn Sie den Status der Seite asynchron aktualisieren möchten, ist UpdatePanel genau das, wonach Sie suchen.

0

Wenn Sie Javascript versuchen, nur weil Sie die Seite nicht aktualisieren möchten, dann gehen Sie auf Update Panel. Die Antwort auf Ihre Frage lautet "Nein", Sie können nicht auf nicht-statische Methoden zugreifen, wie Sie es möchten.

Der Grund, warum es nur statische Methoden unterstützt, ist, dass die Instanziierung der Seite nicht durchgeführt wird. Wenn Sie nicht statische Webmethoden verwenden möchten, gehen Sie zum Webdienst (.asmx).

Verwandte Themen