Je cherche un moyen d'ajouter un contrôle éditeur (à partir de l'ASP.NET AJAX Control Toolkit) à chaque élément d'un répéteur. Cela fonctionne bien si je l'inclue simplement dans le ItemTemplate du répéteur, mais mon problème est que le balisage qu'il produit est énorme, ce qui ralentit considérablement la page (même avec la compression activée). Je n'ai pas eu de chance d'ajouter le contrôle à l'intérieur de l'élément répéteur en utilisant un panneau de mise à jour - Je pense que c'est probablement la méthode préférée, mais ajouter dynamiquement un contrôle dans un panneau de mise à jour n'est pas quelque chose J'ai réussi à le faire, et il ne semble pas y avoir de bons exemples de ce que je peux trouver.Ajouter un contrôle éditeur dynamiquement à l'intérieur d'un répéteur en utilisant AJAX
L'autre alternative que j'ai considéré était d'utiliser PageMethods pour rendre le contrôle et renvoyer le HTML à la page pour que le javascript le mette à l'endroit approprié, puis le traiter, mais il ne me laisse pas rendre le contrôle - Je reçois une InvalidOperationException de "Page ne peut pas être null. Veuillez vous assurer que cette opération est effectuée dans le contexte d'une requête ASP.NET.". Ma conjecture est que tout le javascript généré fait en sorte que je ne peux pas rendre un contrôle de l'éditeur à la volée.
Pouvez-vous me diriger dans la bonne direction pour accomplir cela?
Merci
EDIT: Une autre alternative, si elle est possible, serait de mettre un contrôle de l'éditeur normale dans le balisage de la page, puis déplacez-le à l'intérieur du répéteur, au besoin, en utilisant javascript. Je peux le faire avec les commandes normales, mais quand je le fais avec un éditeur, il ne se comporte pas bien - la boîte de texte apparaît, mais ne me laisse pas cliquer dedans. Si vous avez des idées à ce sujet, j'apprécierais aussi cela. Voici le code pour cela:
<span id="spanHiddenEditor" style="display: block;">
<cc1:Editor ID="ed1" runat="server" Height="200" Width="400" />
</span>
<script type="text/javascript">
function createTextBox(idx) {
var span = $get("span1_" + idx); // this gets me the target location
var hiddenEditorSpan = $get("spanHiddenEditor")
var editorHtml = hiddenEditorSpan.innerHTML;
hiddenEditorSpan.innerHTML = "";
span.innerHTML = editorHtml;
}
</script>
Je n'ai jamais été capable de faire ce travail, donc j'ai fait une solution pour afficher mon contrôle d'éditeur dans un pseudo-popup, de sorte qu'il ne soit en une seule fois sur la page, en dehors du répéteur. Je triche et place les informations de l'élément répéteur dans un champ caché de sorte que lorsque la page est soumise, je suis capable de trouver quel élément du répéteur était responsable de la publication. Pas une solution parfaite, mais cela fonctionne. Je n'ai pas les points SO pour fermer cette question, donc si quelqu'un veut la fermer, n'hésitez pas. –