2013-01-31 2 views
0

Je dois afficher une confirmation côté client après le calcul d'un côté de serveur de formule complexe. Quelque chose commeExécuter le code côté serveur après la confirmation côté client uniquement

//Server side 
     On ButtonClick(){ 
      FetchRate(field1,field2,.... fieldn); 
      // Show Client side confirmation 
      // Execute server side code if confirmed client side 
    } 

Ce que je l'ai fait est créé une fonction côté client, mais mon code côté serveur exécute toujours sur postback, peu importe ce que je choisis côté client

// Server side  
ScriptManager.RegisterStartupScript(this,this.GetType(), Guid.NewGuid().ToString(), "ConfirmAction('"+ myRate +"');", true); 
//Client side 
    function ConfirmAction(myRate) { 
      if (confirm('Are you sure?. Rate is exceeding '+ myRate +', proceed ?')) { 
       document.getElementById('hfSaveUpdate').value = 1; 
       return true; 
      } 
      else 
       return false; 
     } 

Répondre

2

Vous pouvez utiliser Ajax Model Popup & gérer son ok & bouton d'annulation.

<ajaxToolkit:ModalPopupExtender ID="ModelPopupID" runat="server" 
    TargetControlID="LinkButton1" 
    PopupControlID="Panel1" 
    BackgroundCssClass="modalBackground" 
    DropShadow="true" 
    OkControlID="OkButton" 
    OnOkScript="onOk()" 
    CancelControlID="CancelButton" 
    PopupDragHandleControlID="Panel3" /> 

Lancement d'une fenêtre Popup Modal du code serveur:

serveur Code Side:

ClientScript.RegisterStartupScript(this.GetType(), "key", "launchModal();", true); 

code côté client:

<script type="text/javascript"> 
var launch = false; 
function launchModal() 
{ 
launch = true; 
} 
function pageLoad() 
{ 
if (launch) 
{ 
$find("ModelPopupID").show(); 
} 
} 
</script> 

On clique ok du modèle pop-up , exécutez vous côté serveur après le code de conformation. Lorsque vous cliquez sur le bouton Annuler, il vous suffit de masquer la fenêtre contextuelle du modèle.

Pour plus de détails, vérifier:

ModalPopup Tutorial

2

Vous ne pouvez pas mettre une action côté client entre le code côté serveur.

Votre code prépare la confirmation côté client, mais ne l'envoie pas au navigateur tant que la réponse n'est pas terminée. Le serveur continue ensuite à traiter vos données. Quand c'est fait, la réponse est envoyée au navigateur et l'utilisateur voit la boîte de dialogue de confirmation. Trop tard: les données ont déjà été traitées. Et le résultat de la boîte de dialogue n'est jamais envoyé au serveur.

Vous aurez besoin de diviser le processus en deux: d'abord obtenir confirmation de ce taux (peut-être en utilisant ajax) et ensuite soumettre le formulaire à traiter/stocké.

Questions connexes