2009-05-12 10 views
5

J'ai un petit problème avec cette configuration ici J'ai une liste de .ascx fichiers et ils font tous des tâches différentes en termes de calculs pour le contrôleur lui-même. Donc, sur ma page .aspx, je clique sur un Ajax.ActionLink() et cela affichera le fichier .ascx en fonction de l'élément sur lequel j'ai cliqué. Dans ce .ascx sont 1-3 événements qui vont tirer 2 d'entre eux sont onclick événements et 1 est onload. Le onclick événement (s) sont plus faciles à travailler en termes de je peux le coder directement dans l'événement contrôles comme si onclick="$("#toggleMe3").slideToggle("slow");" et le onload doit fonctionner lorsque le .ascx est chargé je testais cela dans un appel $(document).ready(function(){});, cela fonctionne très bien dans le .aspx page mais dès que j'essaie de l'ajouter dans la page .aspx il ne charge pas et son idéal que cela fonctionne, mais je ne sais pas pourquoi pas. En fait rien dans les balises de script ne fonctionne si j'insère directement dans la page .ascx ils ne fonctionnent que si codés en dur dans les événements du contrôle, et bien certains d'entre eux au moins; le onload et onprerender ne tirent pas.

+0

même problème ici. –

Répondre

1

J'ai eu le même problème, après que le script de publication partielle spécifié dans $ (document) .ready n'a pas été exécuté. J'ai trouvé la solution ici MSDN - PageRequestManager Class

On dirait que l'ajout d'un script comme ci-dessous résout le problème

<script type="text/javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myReadyFunction); 
</script> 
1

J'ai réussi à utiliser $ (document) .ready dans mes partiels chargés via XHR. Les vues que vous chargez via XHR lancent-elles des exceptions JavaScript? Ou contiennent-ils du HTML malformé?

J'ai généralement mon $ (document) méthode .ready au fond de ma partie que je charge via Ajax, comme ...

<script type="text/javascript"> 
$(document).ready(function(){ callMyFunction(); }); 
</script> 
+0

Malheureusement, cela ne fonctionne pas pour moi, j'ai ajouté les balises de script au fond toujours pas de chance. J'utilise MicrosoftAjax.js pour contrôler les appels Ajax et pas la fonction jquery ajax. – Ayo

+0

Cela fonctionne pour moi, au moins dans FF3.5 et IE7 sur Windows XP. Cependant, je ne comprends pas pourquoi, comme la documentation jQuery ne gère pas ce cas ... –

+0

cela a fonctionné pour moi sur chrome – Roch

1

J'ai eu du mal à comprendre votre question ... mais ça va.

Si vous chargez la date à l'aide d'appels AJAX, l'événement $ (document) .ready() ne se déclenchera pas car la page a déjà été chargée. Vous chargez simplement plus de données maintenant.

Si vous connaissez déjà les contrôles qui vont apparaître, préchargez le JavaScript, mais au lieu de simplement lier à l'aide du gestionnaire d'événement click, utilisez le gestionnaire en ligne.

si

$("#myControl").click(....); 

se transforme en

$("#myControl").live("click", ....); 

Désolé si ce n'est pas ce que vous recherchez.

+0

cela fonctionnerait-il dans ma page ascx? – Ayo

+0

si la page n'est pas chargée dynamiquement, oui. Sinon, vous avez besoin du live pour précharger les gestionnaires d'événements de l'aspx. Sinon, vous devrez ajouter quelques hooks supplémentaires du côté client pour savoir quand le contenu est chargé et appeler le javascript chargé. –

Questions connexes