2009-03-20 7 views
1

J'ai une masterpage avec un contrôle de connexion dedans. Lorsque vous cliquez sur le bouton Connexion, je voudrais qu'une fenêtre de dialogue JQuery apparaisse si l'adhésion de l'utilisateur est sur le point d'expirer dans les 30 jours, sinon elle se connectera normalement. Je ne peux pas comprendre comment le faire. Je wll posterai parties du code:Comment appeler une fonction javascript à partir d'un contrôle dans une page maître?

Voici le javascript:

<script type="text/javascript"> 
    function showjQueryDialog() { 
     $("#dialog").dialog("open"); 
    } 

    $(document).ready(function() { 
     $("#dialog").dialog({ 
      autoOpen: false, 
      modal: true, 
      buttons: { "Renew Membership": function() 
        { $(this).dialog("close"); } } 
     }); 
    }); 
</script> 

Le bouton de connexion est appelé ibtnLoginButton et voici une partie du code:

//Grab the user profile. 
UserProfiles userProfile = 
      UserProfiles.GetUserProfiles(txtUserName1.Text); 

//Calculate the Time Span 
TimeSpan timeSpan = userProfile.Expiration.Subtract(DateTime.Now); 

if (timeSpan.Days < 30) 
{ 
//Show JQuery Dialog Here 
} 
else 
{ 
    //Continue with Login Process. 
} 

Répondre

2

que pensez-vous de cela?

if (timeSpan.Days < 30) 
{ 
//Show JQuery Dialog Here 
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "showExpiration", "showjQueryDialog()", true); 
} 
+0

Ok, j'ai essayé ceci et il montre le texte qui est dans la div pour le dialogue, mais la boîte de dialogue n'apparaît pas. – Xaisoft

+0

Essayez de changer la fonction Javascript showJQueryDialog() en: function showJQueryDialog() {alert ('Il est temps de renouveler l'adhésion!'); } ou quelque chose comme ça. Cela vous convient-il? – SquidScareMe

+0

Une fois que vous obtenez ce travail, vous pouvez essayer d'obtenir une belle boîte de dialogue modale JQuery pour apparaître comme celui-ci: http://www.ericmmartin.com/projects/simplemodal/ – SquidScareMe

0

Pourquoi pas toujours appeler le jquery méthode lorsque le bouton est cliqué, puis déterminer dans la méthode javascript si vous souhaitez afficher le dialogue? Sinon, ne faites rien. Puisque vous vérifiez seulement si ExpirationDate est plus petit que maintenant + 30 jours, vous pouvez faire ce calcul très bien en javascript.

Edit:

Je ne peux pas vous fournir la solution exacte, mais voici quelques pseudo-code pour vous sur votre chemin.

d'abord faire la date d'expiration du profil de l'utilisateur besoin disponible en javascript:

<script> 
var userProfileExpiresOn = "<asp:Literal ID="userProfileExpiresOn" />"; 
</script> 

Vous pouvez alors modifier votre méthode afin qu'il ne la logique que vous faites actuellement côté serveur pour vous:

<script> 
function showjQueryDialog() { 
    if (userProfileExpiresOn < (now + 30 days)) 
    $("#dialog").dialog("open"); 
} 
</script> 

Vous pouvez trouver de la documentation sur how to work with dates in Javascript at W3schools.

+0

Pouvez-vous donner un exemple? Je suis nouveau sur javascript. – Xaisoft

+0

Mise à jour de la réponse avec un exemple de pseudocode. – Rahul

0

Si, comme vous avez dit que vous avez cette boîte de dialogue jQuery apparaître lorsque vous cliquez sur un aspic: Button, pourquoi ne pas simplement cacher le bouton et changer votre javascript appuyez simplement sur le bouton une fois la page chargée ?

Questions connexes