Je commence à utiliser jQuery BlockUI Plugin pour bloquer l'activité des utilisateurs de la page jusqu'à ce que le bouton soit terminé du côté C#/ASP.NET.Comment débloquer une page bloquée avec jquery-blockui?
J'ai donc écrit ceci;
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.io/min/jquery.blockUI.min.js" ></script>
<script type="text/javascript">
$(document).ready(function() {
$('#MyButtonID').click(function() {
$.blockUI({ message: '<h1>Please wait..</h1>' });
});
});
</script>
Comme vous pouvez le voir, c'est un code simple qui bloque l'interface utilisateur lorsque je clique sur asp:button
qui ID
est MyButtonID
jusqu'à ce qu'il termine son processus. Cela fonctionne très bien.
Maintenant, j'essaie de créer une alerte en fonction d'une condition lors de ce processus de clic. Si je comprends bien, maintenant je dois débloquer ma page en premier, montrer l'alerte et la garder bloquée jusqu'à ce que le bouton soit terminé.
Voilà pourquoi je l'ai écrit deux fonctions (peut-être que je peux appeler ces $.unblockUI
et $.blockUI
directement sans les?) Dans mon côté javascript pour cela;
function UnblockUI() {
$.unblockUI();
}
function BlockUI() {
$.blockUI({ message: '<h1>Please wait..</h1>' });
}
Pour autant que je cherche, moyen le plus courant d'appeler la fonction Javascript côté serveur utilise la méthode ClientScriptManager.RegisterStartupScript
en C#. J'ai donc essayé d'alerter quelque chose sur le côté C# comme exemple avec;
if(condition)
{
string script = string.Format("alert('{0}');", "Some error message");
Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "alert", script, true);
}
et cela a fonctionné. Après cela, j'ai essayé de débloquer la page en appelant la fonction UnblockUI de mon côté javascript mais cela ne l'a pas débloqué.
if(condition)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "unblock", "UnblockUI", true);
string script = string.Format("alert('{0}');", "Some error message");
Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "alert", script, true);
}
Si je comprends bien, ce paramètre UnblockUI
appelle mon UnblockUI
fonction javascript que je défini ci-dessus et cette fonction appelle $.unblockUI();
et débloquer ma page qui est bloqué, mais comme prévu, il ne fonctionnait pas.
Qu'est-ce qui me manque ici? Ou suis-je pas même comprendre que Ce plugin vous permet de simuler le comportement synchrone lors de l'utilisation d'AJAX, sans verrouiller le navigateur phrase?
Je suis _totally_ nouveau sur les scripts côté client. N'hésitez pas à rétrograder tout ce que vous voyez comme un "élément de base peut être trouvé sur Google" ou "RTFM" ou des choses complètement illogiques, etc –
Vous bloquez la page entière? De plus, êtes-vous en mesure d'envoyer une requête ajax au serveur au lieu d'utiliser la fonctionnalité du bouton asp par défaut? Cela rendra ce que vous essayez de faire très facile à cause des rappels. –
@MarkC. Oui. Sur la documentation, il est dit: _Usage est très simple; bloquer l'activité de l'utilisateur pour la page '$ .blockUI();' _. [Blocage d'élément] (http://jquery.malsup.com/block/#element) est différent pour autant que je vois. Êtes-vous capable d'envoyer une requête ajax? Comment puis-je faire exactement cela? Vous voulez dire dans la déclaration «si»? –