2010-09-17 4 views
3

Ceci est un problème que j'ai essayé de résoudre avant mais abandonné. Fondamentalement, j'utilise ModalPopupExtenders (de AJAX.NET) pour afficher des panneaux avec un peu de contenu (texte, contrôles, etc). Et je l'appelle de codebehind. Et ça marche bien.ASP.NET et jQuery - appel de codebehind

Mais maintenant je veux remplacer le ModalPopup par une boîte de dialogue jQuery. Le problème est l'appel de codebehind. Pour autant que je sache, je dois enregistrer les bibliothèques jQuery sur l'événement RegisterStartup, mais je l'ai essayé et j'appelle le jQuery de codebehind mais sans succès.

Quelqu'un peut-il m'aider? Je veux vraiment remplacer le ModalPopup, ils me donnent beaucoup de problèmes.

Merci d'avance.


protected void Page_Load(object sender, EventArgs e) 
{ 
    ScriptManager.RegisterStartupScript(this, GetType(), "registerDialog", 
     "$(function() { $('#dialog').dialog({autoOpen:false, show:'blind'}); });", true); 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ScriptManager.RegisterStartupScript(this, GetType(), "openDialog", 
     "$('#dialog').dialog('open');", true); 
} 

Est-ce la bonne façon? Je dois d'abord l'enregistrer pour rester caché. Thanksю

Répondre

4

Si vous utilisez un ScriptManager, utilisez RegisterStartupScript(), comme ceci:

ScriptManager.RegisterStartupScript(this, GetType(), "modalscript", 
    "$(function() { $('#dialog').dialog(); });", true); 

Si vous n'êtes pas en utilisant un ScriptManager/UpdatePanels, utilisez the equivalent ClientScriptManager version.

Il est important de ne pas oublier d'enrouler votre code dans un gestionnaire document.ready (IE a le plus de problèmes sans cela), donc vos éléments (dans mon exemple, id="dialog") sont dans le DOM et prêts.

+0

Merci Nick. Lorsque vous dites d'envelopper mon code dans un document.ready, dans l'exemple que j'ai montré ci-dessous j'ai tout fait à partir de ScriptManager.RegisterStartupScript Y at-il quelque chose que je devrais changer? J'ai cependant écrit le registerDialog sur document.ready, mais je ne sais pas si c'est pareil. –

+0

@Guilherme - Changez le 'this' (premier argument) pour le UpdatePanel que vous êtes si c'est le cas, aussi vous n'utilisez pas le wrapper' $ (function() {}); 'dans votre appel RegisterStartupScript, make sûr de le faire :) –

+0

Merci encore, résolu;) –

1

Vous n'appelez pas réellement jQuery à partir du code, vous écrivez simplement du code javascript supplémentaire qui est exécuté sur le chargement de la page (après le PostBack).

Dans ce code de démarrage, vous effectuez les appels jQuery.

Questions connexes