2010-03-08 5 views
1

J'ai un problème intéressant lors de l'utilisation de la mise à jour partielle de page dans asp.net avec scriptmanager et un panneau de mise à jour.AJAX Problème de mise à jour partielle de la page lors de l'affichage d'un contrôle

Mon scénario ressemble à ceci: J'utilise le contrôle onglet de la boîte à outils ajax. J'ai également implémenté ce contrôle en utilisant le chargement paresseux, de sorte que lorsque la page est chargée seule l'onglet actuel est chargé, tous les autres onglets ne sont pas rendus, car Im utilisant un UpdatePanel (sur un contrôle .ascx) sur chacun de ces onglets et Lorsqu'un onglet est sélectionné, le panneau de mise à jour effectue une publication asynchrone pour charger le contenu d'un onglet sélectionné.

Sur l'un de mes onglets Im en utilisant un contrôle combobox de obout.com, et cela ne fonctionne pas. Maintenant je sais pourquoi ça ne marche pas. Cela ne fonctionne pas car le contrôle est affiché via une actualisation partielle de la page, mais pour afficher correctement le contrôle, il doit faire un peu de "magie" c'est-enregistrer quelques .css et .js inclut sur la page (dans la tête je suppose) .... mais parce que je charge ce contrôle via l'actualisation de la page asynchrone ... il ne peut pas faire ces choses.

Quel genre de travail suggérez-vous? Merci!

Répondre

0

Comme je me doutais que vous devez enregistrer manuellement les scripts nécessaires pour que les contrôles ajax fonctionnent de cette manière. Par exemple est ici la solution pour telerik contrôle: http://www.telerik.com/help/aspnet-ajax/troubleshooting.html

Voici une solution en utilisant les contrôles DevExpress: protected void Page_Load (object sender, EventArgs e) { DevExpress.Web.ASPxClasses.ASPxWebControl.RegisterBaseScript (ce); }

Je n'ai pas trouvé de solution pour les contrôles obout.com.

0

En supposant que vous ayez déjà effectué des mises à jour partielles ajax dans asp.net, il vous suffit d'enregistrer un bloc client avec ScriptManager pour savoir quand la mise à jour partielle est déclenchée.

Sans connaître votre espace de problème, il est difficile de coller le code spécifique pour vous, donc au lieu que je vous suggérerais vous lisez ceci et poser plus de questions si vous en avez ...

http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.registerclientscriptblock.aspx

BTW, si vous êtes dynamiquement créer les contrôles ainsi que les mettre à jour partiellement, alors vous devrez également faire très attention à votre état viewstate. C'est une boîte de Pandore, donc j'espère que vous n'êtes pas et ne devrez pas vous en inquiéter.

+0

hmmm ok ... mais je ne sais pas quoi enregistrer ou comment m'enregistrer ... tout ce que je sais, c'est que le contrôle ne fonctionne pas car ce bloc client est manquant: var tempStyleSheet = document.createElement ('lien'); tempStyleSheet.rel = 'feuille de style'; tempStyleSheet.type = 'text/css'; tempStyleSheet.href = "/ WebResource.axd? d = WN8o_1mSR3c5ZcycIrIgY5X-rne-Lk2UnnW9O4PYJHhL e1cEIZ9xqlugWWi_RGrXl48ODBlfTSGKV_ONmlt3Ps7iyLa9n9SaSfKxBXza8MI1 & t = 634019749616106305"; document.getElementsByTagName ('head') [0] .appendChild (tempStyleSheet); Est-ce que je copie simplement ceci dans le paramètre de chaîne? –

+0

Ok, j'ai enregistré cette ressource et le contrôle a obtenu son apparence ... mais pas la fonctionnalité, probablement j'ai aussi besoin d'inclure un fichier. Js, mais je ne sais pas où trouver ce fichier? –

+0

Avez-vous réussi à faire fonctionner ce contrôle spécial sans les panneaux de mise à jour et les contrôles ajax? – BenB

Questions connexes