2010-12-14 4 views
0

Nous avons créé un UserControl. À l'intérieur du contrôle de l'utilisateur, nous créons un panneau de mise à jour. A l'intérieur du panneau, nous créons divers contrôles tels que TextBox, Button, DropDownList et ListBox et l'événement qui leur est associé buttonclick(), DropDown_selectedIndexChanged(), TextBox_TextChenged() etc. Tous les contrôles (y compris le panneau de mise à jour) sont programmés en utilisant C#. Pour ajaxifier les événements, nous avons utilisé ScriptManager.Concernant Ajax dans UserControl

ScriptManager est ajouté sur la fonction OnInit comme programatically comme indiqué:

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); 
      if (scriptManager == null) 
      { 
       scriptManager = new ScriptManager(); 
       //scriptManager.EnablePartialRendering = true; 
       this.Controls.AddAt(0,scriptManager); 
      } 

Chaque fois après chargement de la page un seul événement postback partiel faire virer (que l'on souhaite), mais après que l'événement ne se fait renvoyer.

Toutes les modifications valides ont déjà été effectuées dans le fichier web.config pour AJAX. Veuillez suggérer la cause possible et la solution du problème.

+0

recevez-vous un message d'erreur? –

+0

Aucun message d'erreur, y compris toute erreur javascript. – Anoop

Répondre

0

Lors d'une publication partielle, le ScriptManager ne sera pas ajouté car vous essayez de l'ajouter en dehors du UpdatePanel (où il doit être). Cela fonctionne sur le chargement de la première page, car ce n'est pas une publication partielle. Mais après la publication partielle, le ScriptManager ajouté dynamiquement ne sera pas disponible sur la page, et parce que vous essayez de l'ajouter en dehors du UpdatePanel - AddAt(0,...) - après une publication partielle, il ne sera pas réellement ajouté. Sur une publication partielle, vous ne pouvez affecter que les éléments dans le UpdatePanel qui a déclenché la publication.

La ligne de fond est, vous ne pouvez vraiment pas ajouter dynamiquement un ScriptManager, car il ne sera jamais là après une publication partielle. Tout comme vous ne pouvez pas ajouter dynamiquement un autre contrôle en dehors d'un UpdatePanel après un événement provenant de celui-ci.

+0

mais la même application fonctionne parfaitement sur un autre serveur avec la même configuration. – Anoop

+0

Intuitivement, je pense que tous les scripts générés par le chargement de la page initiale ne lieraient pas correctement avec le script généré dans le UpdatePanel après une publication partielle, car il est généré par une instance différente de ScriptManager. Je pourrais me tromper, cependant, peut-être que ScriptManager n'est pas dépendant du contexte, mais il semble très contre-intuitif que cette conception fonctionne. Quoi qu'il en soit, si cela fonctionne sur un autre serveur avec exactement la même configuration ... alors je dirais que les configurations ne sont probablement pas exactement les mêmes. –

+0

Avez-vous vu ce sujet? Une variété de façons cela pourrait fonctionner. http://stackoverflow.com/questions/183950/add-scriptmanager-to-page-programmatically –