2015-08-13 10 views
8

Ho un metodo statico pubblico e vorrei che fosse visualizzato un messaggio se determinati valori sono selezionati. Questo è in ASP.NET quindi l'aggiunta di using System.Windows.Forms; causa problemi perché sto usando using System.Web.UI.WebControls;. Quindi, come posso creare un messaggio?come creare una finestra di messaggio nel metodo statico pubblico vuoto

public static void UpdateSerialQtyRcvd(int SerNoID, int QtyRcvd) 
{ 
    if (SerNo.QtyRcvd != 1) 
    { 
     if (SerNo.Reason == "") 
     { 
      //message 
     } 
    } 
} 

Javascript behing il codice:

function UpdateSerialQtyRcvd(sender, SerNoID, QtyRcvd) { 
     if (QtyRcvd < 0) { 
      alert("Qty Rcvd must be greater than 0"); 
     } 
     else { 
      PageMethods.UpdateSerialQtyRcvdUserControl(SerNoID, QtyRcvd, OnUpdateSuccess, OnUpdateFail); 
     } 
} 

chiamata al metodo web:

[WebMethod] 
public static void UpdateSerialQtyRcvdUserControl(int SerNoID, int QtyRcvd) 
{ 
    JobDeliveryDebrief.UpdateSerialQtyRcvd(SerNoID, QtyRcvd); 
} 
+2

Hai cercato un po '? Ho trovato un paio di post qui su SO su questo. – SuperOli

+0

@SuperOli sì Ho una ricerca in giro ma non sono riuscito a trovare una soluzione – user123456789

+1

ok, quindi la prossima volta, per favore elenca le cose che hai provato nel tuo post per favore. – SuperOli

risposta

7

Aggiungere un JavaScript alert:

clientscriptmanager.registerstartupscript(this.GetType(),"MyAlert","<script>alert('Hello');</script>",true); 

Per utilizzare ClientScript all'interno di un metodo statico passa l'oggetto Page come parametro al metodo statico. Page non è static class. Non è possibile chiamare campi non statici all'interno del metodo statico. È necessario passare l'oggetto pagina al metodo statico come parametro.

protected void Page_Load(object sender, EventArgs e) 
{ 
    UpdateSerialQtyRcvd(SerNoID, QtyRcvd,Page); 
} 

public static void UpdateSerialQtyRcvd(int SerNoID, int QtyRcvd,Page page) 
{ 
    if (SerNo.QtyRcvd != 1) 
    { 
     if (SerNo.Reason == "") 
     { 
      page.ClientScript.RegisterStartupScript(page.GetType(),"alert", "<script>alert('Hai');</script>"); 
     } 
    }   
} 
+0

che causa l'errore: Errore 2496 Il nome 'ClientScriptManager' non esiste nel contesto corrente – user123456789

+0

è davvero aspx.cs page ?? – shreesha

+0

è una pagina ascx.cs – user123456789

1

Questo metodo mostra un messaggio. Il UpdateSerialQtyRcvd è in una WebUserControl.ascx come si desidera:

public static void UpdateSerialQtyRcvd(System.Web.UI.Page pg) 
{ 
    pg.ClientScript.RegisterStartupScript(pg.GetType(), "alert", "<script>alert('Message');</script>"); 
} 

Ora puoi aggiungere la tua if-statement in questo modo:

public static void UpdateSerialQtyRcvd(System.Web.UI.Page pg, int qtyRcvd) 
{ 
    if (qtyRcvd != 1) 
    { 
      //if (SerNo.Reason == "") 
      //{ 
       pg.ClientScript.RegisterStartupScript(pg.GetType(), "alert", "<script>alert('Message');</script>"); 
      //} 
    } 
} 

Ora è possibile chiamare per UpdateSerialQtyRcvdmetodo statico da ogni pagina che ha registrato il WebUserControl.ascx. in questo modo:

YourPage.aspx:

<%@ Register Src="~/WebUserControl2.ascx" TagPrefix="uc1" TagName="WebUserControl2" %> 
<uc1:WebUserControl2 runat="server" id="WebUserControl2" /> 

YourPage.aspx.cs:

protected void Page_Load(object sender, EventArgs e) 
{ 
    WebUserControl2.UpdateSerialQtyRcvd(this,2); 
} 
1

cambiare il metodo di business per generare un'eccezione quando v'è una condizione di errore, in questo modo:

public static void UpdateSerialQtyRcvd(int SerNoID, int QtyRcvd) 
{ 
    if (SerNo.QtyRcvd != 1) 
    { 
     if (SerNo.Reason == "") 
     { 
      throw new Exception("Your message"); 
     } 
    } 
} 

E gestisci l'errore nella tua funzione javascript, come t his:

function OnUpdateFail(result) { 
    alert(result.get_message()); 
} 
0

È possibile restituire il messaggio desiderato dal metodo web statico. E sul lato client messaggio di avviso che utilizza l'avviso di Javascript.

cambio tipo di ritorno di WebMethod a stringa

[WebMethod] 
public static string UpdateSerialQtyRcvdUserControl(int SerNoID, int QtyRcvd) 
{ 
    return JobDeliveryDebrief.UpdateSerialQtyRcvd(SerNoID, QtyRcvd); 
} 

tipo di modifica ritorno di UpdateSerialQtyRcvd a stringa

public static void UpdateSerialQtyRcvd(int SerNoID, int QtyRcvd) 
{ 
    if (SerNo.QtyRcvd != 1) 
    { 
     if (SerNo.Reason == "") 
     { 
      //message 
      return "message"; 
     } 
    } 
} 

In avviso JavaScript qualsiasi messaggio che si ottiene da WebMethod in OnUpdateSuccess function

function UpdateSerialQtyRcvd(sender, SerNoID, QtyRcvd) { 
      if (QtyRcvd < 0) { 
       alert("Qty Rcvd must be greater than 0"); 
      } 
      else { 
       PageMethods.UpdateSerialQtyRcvdUserControl(SerNoID, QtyRcvd, OnUpdateSuccess, OnUpdateFail); 
      } 
    } 
1

Utilizzare ScriptManager.RegisterStartupScript(this, GetType(), "Message", "alert('Message');", true);

Problemi correlati