2010-11-24 8 views
3

J'ai une page qui charge une liste de lecture de chansons. Les chansons individuelles de la playlist peuvent être déplacées autour de la playlist avec jquery. La page intègre également le tri côté serveur avec un panneau de mise à jour ajax. Le problème est qu'après avoir fait un tri côté serveur, les méthodes jquery ne fonctionnent plus. Les méthodes jquery sont-elles reliées au document après que le panneau ajax ajax a mis à jour la page?asp.net ajax jquery

Répondre

0

Un problème existe si nous utilisons un panneau de mise à jour. Nous devons donc ajouter le javascript du côté serveur chaque fois que la page se charge. Ceci peut être fait en ajoutant tous les codes javascript dans une variable chaîne et l'ajoute en utilisant ScriptManager.RegisterStartupScript(this, this.GetType(), "validation", script, false); S'il vous plaît aller à http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.registerstartupscript.aspx/ "pour obtenir plus d'informations sur la fonction et de ses arguments.

Vous pouvez faire une fonction comme celui-ci

private void addScript() 
     { 
      string script = @"<script type=""text/javascript"" language=""javascript""> 
       javascript function including jquery 
       </script>"; 
      ScriptManager.RegisterStartupScript(this, this.GetType(), "validation", script, false); 
     } 

Toute la fonction javascript sera ajoutée dans la chaîne script. appel la fonction dans pageload.So ça va encore ajouter à la page. Je pense que cela résoudra le problème.

+0

StreamReader localStreamReader = nouveau StreamReader (Server.MapPath ("scripts/PlaylistEditing.js")); chaîne localScript = localStreamReader.ReadToEnd(); ScriptManager.RegisterStartupScript (this, this.GetType(), "Mouvement", localScript, false); C'est ce que j'ai fait. – ChampChris

+0

Toujours Ne fonctionne pas? – kbvishnu

+0

Cela a fonctionné pour moi. merci – ChampChris

0

Les méthodes utilisées jquery obtenir refixé au document après que le panneau asp.net ajax met à jour la page?

La réponse courte n'est pas si elles sont liées dans l'événement document.ready. Une solution "rapide et sale" consiste à utiliser pageLoad. Découvrez this forum thread.

1

Si les éléments sont remplacés par la mise à jour ajax et que les liaisons d'événements jquery qui font fonctionner le glissement sont sur les éléments eux-mêmes, alors oui, les liaisons d'événements ne seront pas présentes sur les nouveaux éléments.

Une option consiste à réexécuter, dans le rappel de succès ajax, quelle que soit la méthode d'initialisation qui crée ces liaisons d'événements. Une autre option consiste à utiliser la méthode delegate() de jQuery pour lier ces gestionnaires d'événements à n'importe quel élément d'un conteneur donné qui correspond à un sélecteur (même s'il est ajouté après la configuration des liaisons).

0

Je suis sûr être u'll plus heureux d'utiliser .load

$("body").append("<div style='display:none;'></div>"); 
$("div:last").load("url.aspx?id=1", function(response, status, xml){ ...do stuff }); 

j'ai alway problème avec $ .ajax ennuyeux, beaucoup de aruments et les conflits

si votre panneau de mise à jour est cassé , vous pouvez toujours poster en utilisant javascript __doPostBack (elmID, args);