modalpopupextender et les virgules apparaissant dans ma zone de texte asp.net
Un truc bizarre qui se passe, je suis la conversion d'une application permettant d'utiliser le javascript pour ouvrir une autre page web dans une petite fenêtre pour la saisie de données à utiliser un ModalPopupExtender.
Il semble fonctionner très bien, mais dans l'OK de l'événement, quand je fais txtData.Texte (textbox dans mon modal popup), il revient avec une virgule avant les données, donc si vous tapez "Lapin", il revient en tant que "Lapin".
Aussi quand je l'utilise plusieurs fois, dans un autre endroit où je pourrais cliquez pour l'afficher, et de type "Poisson", il commence à revenir avec des trucs comme ",le Lapin,le Poisson"
Je ne sais pas pourquoi ou comment arrêter de faire cela... des idées?
- Merci de poster votre code.
- Connaissant exactement le même problème. Cela semble être depuis que nous avons mis à jour à la dernière version de l'AJAX control toolkit. Également provoquer des erreurs aléatoires comme Message: Sys.InvalidOperationException: Deux éléments avec le même id '[ExtenderID]' ne peut pas être ajoutée à l'application. pour chaque contrôle ajax/répéteur sur la page.
- À la fin, je ne pouvais pas trouver une solution, j'ai donc fini par la modification de ma page à utiliser Javascript pour cacher et de montrer ma modale de dialogue, et de faire une actualisation de la page entière au lieu d'utiliser un updatepanel... c'est nul!
Vous devez vous connecter pour publier un commentaire.
Pour une raison quelconque, il ne semble pas se produire si la zone de texte est définie En lecture seule.
Je suis en train de penser, il pourrait être une solution de contournement par l'affichage d'une zone de texte éditable à l'utilisateur, la capture de la séquence de touches à elle, et la mise à jour d'une zone de texte en lecture seule qui est caché à l'utilisateur.
Encore un peu brouillon, mais je ne peux pas revenir à de Mai de la version, car il y a un autre bug dans cette version avec la zone de liste déroulante que j'ai besoin de pour éviter!
Mise à JOUR:
Comme un peu le contexte, j'ai un contrôle de l'utilisateur (ascx) à l'intérieur de mon modal popup parce que j'ai besoin de le réutiliser. Le ascx de gérer l'entrée de l'utilisateur lui-même (la page qui les contient ne sais pas ce qu'il se passe à l'intérieur de la commande) ainsi, lorsque l'utilisateur clique sur un bouton, je fais un rappel et traiter les données. Si un résultat est retourné au client en fonction de rappel puis-je simuler un clic de ce que la page qui les contient pense que c'est le bouton "OK" qui est en fait invisible pour l'utilisateur.
J'ai modifié mon code pour ajouter un caché, lecture seule zone de texte et copier le texte à partir de l'original de zone de texte dans le nouveau compte à chaque fois que la modification du texte.
devient
puis lors de la transmission de valeurs de retour dans le rappel au lieu d'obtenir la valeur de txtName, j'utilise txtNameRO.
Je ne pense pas que ce sera de l'aide si vous êtes en train de faire une publication, mais vous pouvez ajouter un rappel avant la publication comme je le fais. J'espère que cela aidera quelqu'un de toute façon!
Même ici. Aucune idée de pourquoi cela se produit. Chaque publication initiée par des boutons dans le panneau ajoute les virgules et les valeurs précédentes pour tous les champs de texte.
Accrochage dans la zone de texte.Texte setter a révélé que les données endommagées vient de postdata collection. Donc, cela signifie que, juste avant la publication de la ModalPopupExtender corrompt les données.
P. S. je ne suis pas en utilisant UpdatePanel, mais régulière du Panneau, donc il n'y a pas les déclencheurs associés à des boutons.
Mise à jour: Solution trouvée.
Le problème semble disparaître lors de l'annulation de Mai de la libération de AjaxToolKit (http://ajaxcontroltoolkit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27326).
Juste partage de cette solution pour tout le monde sur ce problème. Essayez de ne pas utiliser asp contrôle au lieu d'utiliser le format html.
cela fonctionne très bien pour moi.
Merci,
J'ai aussi trouvé un forum en indiquant qu'il pourrait être la norme html de comportement pour quand il y a de multiples contrôles sur le formulaire avec le même nom. Cet esprit (et en supposant qu'il existe un bug dans les contrôles ajax) La façon dont j'ai codé autour de celle-ci à ajouter dans ma Page_Load suivant la nature de la déclaration pour chacun de mes zones de texte.
string[] vals = txtValue.Texte.Split(Convertir.ToChar(","));
txtValue.Texte = vals[vals-les-bains.Longueur - 1];//Il semble que ma dernière valeur a toujours été, dans le dernier élément
Depuis le formulaire de charge qui se passe avant les événements de bouton j'ai trier mes champs avant de vous rendre à l'événement qui traite avec leurs valeurs.
J'ai eu un problème similaire, ayant un jQuery Dialogue à l'intérieur d'un UpdatePanel. Comme j'ai pu lire sur différents sites, le problème est causé par les doublons à l'intérieur de l'arborescence DOM.
À la fin, j'ai trouvé une solution très simple. - Je attribuer la boîte de dialogue pour la div, puis l'ouvrir ou le fermer par JavaScript et ensuite exécuter cette petite paix de code pour supprimer les doublons:
EDIT: il s'est avéré ne pas être SI simple. En fin de compte, mon code ressemble à ceci:
Dans le document prêt (et aussi asynchrone appels en page):
Dans mon code complet, mustOpenDialog et mustCloseDialog sont définies dans le code-behind.
J'ai eu le même problème avec les valeurs précédentes de revenir séparées par des virgules. Il semblait que mon bouton ok a été à l'intérieur du panneau de mise à jour et je l'ai eu dans les déclencheurs de la section aswell. Supprimer le bouton de la déclencheurs de la section de l'updatepanel résolu le problème.
cordialement - Tobias
Ma réponse était similaire à Smarty est. Ma page ressemble à ceci...
La solution était de changer pour cette...
J'ai eu à enregistrer chaque bouton comme un contrôle de publication avec le scriptmanager sur le contrôle gridview rowdatabound événement. L'inconvénient, c'est que j'ai plus complète des publications. Mais, il a résolu le problème.
C'est assez réponse tardive, mais je suis en train de le documenter ici afin que d'autres puissent en bénéficier.
Mon Scénario
Ouvrir de contrôle de l'utilisateur à l'intérieur de jquery dialogue sur le bouton cliquez sur. Ce contrôle utilisateur a panneau de mise à jour à l'intérieur et quelques zones de texte. Premier temps ouvrir la boîte de dialogue, il a travaillé comme un charme. Sur les clics pour ouvrir la boîte de dialogue, j'ai remarqué un comportement bizarre. J'ai eu quelques zones de texte à l'intérieur du contrôle de l'utilisateur(à l'intérieur du panneau de mise à jour). Sur toute partielle nouveau, le texte des zones de texte modifié pour
current text, current text
. Si la valeur de la textbox estfish
, puis sur toute partielle des publications de ses changé àfish, fish
.La raison de cette été j'ai été en utilisant jquery pour ouvrir la boîte de dialogue. J'ai aussi ajouté de la boîte de dialogue formulaire sur le clic du bouton.
Donc sur les clics multiples contrôles utilisateur où annexé à DOM et, partant, tandis que le bâtiment de la poste de retour de données, il n'existait plus d'un contrôle avec le même id et donc il y a des valeurs ajoutés à l'aide de "," - virgule.
Donc ma solution est simple, lors de la fermeture de la boîte de dialogue, j'ai juste supprimé de DOM
J'ai eu de l'indice à partir du lien suivant. Le poster ici pour référence future
ici
J'ai mis en œuvre avec succès un complet hack basé sur Jen de réponse. J'utilise un asp:HiddenField pour conserver la valeur que je veux renvoyer, et je le remplir avec un pur HTML entrée de la boîte de
C'est plus léger que Jen la solution comme vous êtes encore seul affichage en arrière d'un serveur de contrôle.
BTW, c'est un très significative bug dans l'Ajax Toolkit. Vous pouvez voter et commenter ici:
CodePlex Problème
Semblant que vous êtes à Chicago. Vote précoce, le vote souvent des.
Pour moi la solution a été d'obtenir le modal poup de la principale panneau de mise à jour. Une fois que je ne les virgules s'en alla. Si vous avez vraiment besoin d'un panneau de mise à jour à l'intérieur de l'modal popup, créer un de c'est propre à l'intérieur du groupe.
Je n'ai pas besoin de revenir à la précédente version de la boîte à outils.
J'ai essayé de résoudre ce pour une journée maintenant et certains très utile personne dans mon bureau, a fait une formidable solution!
Nous avons déplacé le ModalPopUpExtender et suivantes pop up panneau contrôlé par l'unité d'extension à l'extérieur de la ultrapériphériques UpdatePanel sur la page, créé un faux bouton et a donné l'ID du bouton faux à la TargetControlID propriété de la ModalPopUpExtender.
À l'intérieur de mes formulaires/page où le PopUp extender et les panneaux, j'ai créé un événement OnClick sur le bouton que nous avons l'habitude d'utiliser pour déclencher le ModalPopUpExtender.
Sur mon bouton qui déclenche le ModalPopUpExtender, j'ai créé un événement OnClick appelé "LoadPopUp" - dans LoadPopUp dans le code derrière, j'ai simplement mis ModalPopUpExtender1.Show();
J'ai eu le même problème sauf que je ne suis pas à l'aide de la AjaxControlToolkit ou de mise à jour des panneaux. Mon problème a été résolu en déplaçant le
<form>
tag de la ASP.net de la page principale la page où les zones de texte sont. Peut aider quelqu'un.a le même problème et j'ai trouvé la solution ici: http://ajaxcontroltoolkit.codeplex.com/workitem/26259
Le problème est ajax dernière version, il suffit d'INSTALLER l'année 2009 ajax version et modalpopup fonctionnera parfaitement avec votre code.
Tuve el mismo problema y encontré la solución en el lien que indico arriba.
El problema viene con las versiones recientes de l'ajax, simplemente instala la version del año 2009 y el modalpopup funcionará bien con tu código réel.
La solution est de prendre le modal popup de la principale panneau de mise à jour. Faire une fois que les virgules vont s'en aller. Si vous avez vraiment besoin d'un panneau de mise à jour à l'intérieur de l'modal popup, créer un de c'est propre à l'intérieur de ce groupe.
J'ai eu ce problème et a perdu un peu de temps sur elle et a trouvé qu'il a été causé par une balise supplémentaire se cacher que j'ai oublié de l'enlever lors de la modification de balisage.
Assurez-vous que sur le .page aspx toutes les balises en ligne correctement.