11
votes

modalpopupextender et virgules apparaissant dans ma zone de texte ASP.NET

Certaines choses étranges se produisent, je convertis une application utilisée pour utiliser JavaScript pour ouvrir une autre page Web dans une minuscule fenêtre pour une entrée de données pour utiliser un modalpopupextender.

Il semble fonctionner bien, mais dans l'événement OK, lorsque je le fais TXTDATA.Text (la zone de texte de ma popup modale), elle revient avec une virgule avant les données, donc si vous tapez "lapin", il vient de retour comme ", lapin".

De plus, lorsque je l'utilise plusieurs fois, dans un autre endroit où je pourrais cliquer pour le montrer, et tapez "Fish", 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?


2 commentaires

Expérimenter le même problème. Cela semble être depuis notre mise à jour de la dernière version de la boîte à outils de contrôle Ajax. Causer également des erreurs aléatoires telles que le message: SYS.InvalidoperationException: Deux composants avec le même ID '[EXTERNETID]' ne peuvent être ajoutés à l'application. Pour chaque contrôle / extendeur Ajax sur la page.


En fin de compte, je n'ai pas pu trouver une solution, j'ai donc fini par modifier ma page pour utiliser JavaScript pour masquer et montrer mon dialogue modal et faire une actualisation complète de la page au lieu d'utiliser un UpdatePanel ... craint!


15 Réponses :


2
votes

J'ai eu le même problème avec les valeurs précédentes qui revenaient des virgules séparées. Il semblait que mon bouton OK était à l'intérieur du panneau de mise à jour et je l'ai eu dans la section des déclencheurs ASWELL. Supprimer le bouton de la section Déclencheurs de l'US UpdatePanel a résolu le problème.

Cordialement - Tobias


0 commentaires

4
votes

même ici. Aucun indice pour la raison pour laquelle cela se produit. Chaque poteau initié par des boutons dans le panneau ajoute des virgules et des valeurs précédentes à tous les champs de texte.

Accrochage dans TextBox.Text Setter a révélé que les données corrompues proviennent de la collection postdata. Donc, cela signifie que juste avant le post-plan, le modalpopupextender corrompt les données.

P.s. Je n'utilise pas UpdatePanel, mais un panneau régulier, donc il n'y a pas de déclencheurs associés à des boutons.

mise à jour: solution trouvée.

Le problème semble disparaître lorsque vous retournez à la sortie de AjaxToolkit de May ( http://ajaxcontroltoolkit.codeplex.com/release/projectrelases.aspx?releaseid=27326 ).


2 commentaires

Merci un tas. Rouler vers la libération de mai a fonctionné comme un charme.


Jeez! Merci beaucoup - cela me conduisait des bonkers.



1
votes

Pour une raison quelconque, il ne semble pas se produire si la zone de texte est définie sur Lisonly.

Je pense qu'il pourrait y avoir une solution de contournement en affichant une zone de texte modifiable à l'utilisateur, ce qui ait attrapé la frappe de frappe. une zone de texte réadonnée cachée de l'utilisateur.

toujours un peu désordonnée, mais je ne peux pas revenir à la libération de mai, car il y a un autre bogue dans cette libération avec le ComboBox que j'ai besoin d'éviter!


mise à jour:

comme un peu de fond, j'ai un contrôle utilisateur (ASCX) à l'intérieur de ma popup modale car j'ai besoin de le réutiliser. L'ASCX doit gérer l'entrée de l'utilisateur elle-même (la page contenant ne sait pas ce qui se passe à l'intérieur du contrôle), donc lorsque l'utilisateur clique sur un bouton, je fais un rappel et traiter les données. Si un résultat réussi est renvoyé à la fonction de rappel client, je simulez un clic sur ce que la page contenant réfléchit est le bouton "OK" qui est réellement invisible à l'utilisateur.

J'ai changé mon code pour Ajoutez une zone de texte cachée, réadonnée et copiez le texte de la zone de texte d'origine dans la nouvelle à chaque fois que le texte change. xxx

devient xxx

Lorsque vous passez des valeurs dans le rappel au lieu d'obtenir la valeur de txtname, j'utilise txtnynamero.

Je ne pense pas que cela aidera si vous faites un post-retour, mais vous pourrait ajouter un rappel avant le post-plan que j'ai. Espérons que cela aidera quelqu'un de toute façon!


0 commentaires

0
votes

J'ai mis en œuvre avec succès un piratage complet en fonction de la réponse de JEN. J'utilise un ASP: Hiddenfield pour contenir la valeur que je veux poster, et je le peuplie avec une boîte d'entrée HTML pure

<asp:HiddenField ID="txt" runat="server"/>
<input type="text" onchange='document.getElementById("<%= txt.ClientID %>").value = this.value;' />


0 commentaires

0
votes

Pour moi, la solution consistait à obtenir le pôle modal hors du panneau de mise à jour principal. Une fois que j'ai fait que les virgules sont parties. Si vous avez vraiment besoin d'un panneau de mise à jour à l'intérieur de la fenêtre contextuelle modale, créez-en une des personnes à l'intérieur de ce panneau.
Je n'ai pas besoin de retourner à la version précédente de la boîte à outils.


1 commentaires

Scratchez cela, j'ai posté trop tôt. Cela n'a pas fonctionné pour moi. Je suppose que je vais retourner après tout.



0
votes

J'ai essayé de résoudre cela pendant une journée maintenant et une personne très utile de mon bureau a proposé une solution fantastique!

Nous avons déplacé le modalpopupExtender et le panneau pop-up suivi contrôlé par l'extension à l'issueur de l'empote Update ultime de la page, créé un faux bouton et a donné l'identifiant du faux bouton à la propriété cibleControlid du modalpopupextender. xxx

à l'intérieur de mes formulaires / page où l'extendeur popup et les panneaux étaient créés un événement OnClick sur le bouton que nous avions utilisé pour déclencher le modalpopupextender . xxx

sur mon bouton qui déclenche le modalpopupextender, j'ai créé un événement OnClick appelé "CHODPOPUP" - dans CHODPOPUP dans le code derrière I Mettez simplement modalpopupextender1.show (); / p> xxx


0 commentaires

3
votes

J'ai également trouvé un forum indiquant qu'il peut s'agir d'un comportement HTML standard pour le moment où il existe plusieurs contrôles sur le formulaire avec le même nom. Cela en tête (et en supposant qu'il y a un bug dans les commandes Ajax), la façon dont j'ai codé autour de celui-ci consistait à ajouter dans mon type de déclaration suivante pour chacune de mes boîtes de texte.

chaîne [] vals = txtvalue.text.split (convert.toCar (",")); txtvalue.text = vals [vals.length - 1]; // Il semble que ma dernière valeur était toujours dans le dernier élément

Étant donné que la charge de formulaire se produit avant l'événement de boutonnage, je trie mes champs avant d'arriver à l'événement qui traite de leurs valeurs.


1 commentaires

Pour moi, la déclaration sur plusieurs éléments de formulaire était la clé. J'ai eu une boîte de dialogue JQuery UI sur la page, après avoir commutée à l'aide des post-packs ASYNC, le formulaire serait copié pour la boîte de dialogue, mais non supprimée. Lorsque je retire le formulaire avant le post-plan, je ne reçois plus de valeurs délimitées par des virgules.



2
votes

Ma réponse était similaire à celle de Smarty. Ma page ressemblait à ceci ... xxx

La solution consistait à le changer en ce ... xxx

je devais enregistrer chacun Bouton comme contrôle de publication avec le scriptManager dans l'événement GridView Rowdatabound. Le côté bas est que j'ai plus de post-retours complets. Mais cela résolva le problème.


0 commentaires

3
votes

J'ai eu un problème similaire, avoir une boîte de dialogue JQuery à l'intérieur d'un Panneau Update. Comme je pouvais lire sur différents sites, le problème est causé par des doublons à l'intérieur de l'arbre Dom.

À la fin, j'ai trouvé une solution très simple. J'affecte la boîte de dialogue à la div, puis ouvrez ou fermez-la par JavaScript, puis exécutez cette petite paix de code pour supprimer les duplicats: xxx

édition: il s'est avéré non Soyez si simple. En fin de compte, mon code ressemblait à ceci:

dans le document prêt (et également des appels de page asynchrones): xxx

dans mon code complet, Mustopendielog et MustCloseDioriog est défini dans CodeBeHind.


1 commentaires

Dans les dialogues de JQuery, une solution est une solution - lors de la création de la boîte de dialogue - pour définir l'événement 'Fermer' et détruire la boîte de dialogue. Comme ceci: Fermer: fonction (événement, ui) {$ (this) .dialog ("détruire"). Supprimer (); }



2
votes

C'est une réponse assez tardive, mais je le documente ici afin que les autres puissent en bénéficier. Mon scénario

Ouvrir la commande utilisateur à l'intérieur de la boîte de dialogue JQuery sur le bouton Cliquez. Ce contrôle de l'utilisateur avait un panneau de mise à jour à l'intérieur et de quelques boîtes de texte. Première fois ouvre la boîte de dialogue, cela a fonctionné comme un charme. Sur les clics suivants pour ouvrir la boîte de dialogue, j'ai remarqué un comportement étrange. J'ai eu peu de textes de texte à l'intérieur du contrôle de l'utilisateur (Panneau de mise à jour de l'intérieur). Sur n'importe quel article partiel, le texte de Textbox a changé en texte texte actuel, texte actuel code>. Si la valeur de la zone de texte était poisson code>, puis sur des postes partiels, il est modifié en poisson, poisson code>. P>

La raison de ceci était que j'utilisais jQuery ouvrir la boîte de dialogue. J'ai également annexé la boîte de dialogue pour former en cliquant sur le bouton. P>

 dlg.parent().appendTo($('form:first'));


1 commentaires

Ce lien n'est plus disponible. Pouvez-vous publier plus de votre code?



4
votes

Il suffit de partager cette solution à tout le monde sur ce problème. Essayez de ne pas utiliser la commande ASP à la place utilisez HTML.

*<input type="text" id="txtID" runat="server" class="myClass" />*


0 commentaires

0
votes

J'ai eu le même problème, sauf que je n'utilise pas les panneaux AjaxControlToolkit ou Mettre à jour. Mon problème a été résolu en déplaçant la balise de la page maître ASP.NET à la page où sont les boîtes de texte. Peut aider quelqu'un.


0 commentaires

0
votes

a le même problème et j'ai trouvé la solution ici: http: // ajaxcontroltoolkit .Codeplex.com / Workitem / 26259

Le problème est la dernière version Ajax, juste installer l'année 2009 La version Ajax et ModalPopup fonctionnent bien avec votre code actuel.

Tuve el Mismo Problème Y ENCONTRE LA SOLUCIÓN EN EL LINK QUE INDICO ARRIBA. EL Problème VIENE CON LAS VERSESES RECIENS DE AJAX, SIMPLEMENTE INSTALA LA VERSION DEL AÑO 2009 Y EL MODALPOPUPUP FUNCIONARÁ BIEN CONU CÓDIGO.


0 commentaires

0
votes

La solution consiste à obtenir la fenêtre contextuelle modale du panneau de mise à jour principale. Une fois que les virgules vont disparaître. Si vous avez vraiment besoin d'un panneau de mise à jour à l'intérieur de la fenêtre contextuelle modale, créez-en une des personnes à l'intérieur de ce panneau.


0 commentaires

0
votes

J'ai eu cette question et j'ai perdu peu de temps dessus et a constaté que c'était causé par une balise supplémentaire cachée que j'ai oublié de supprimer lors du changement de balisage.

Assurez-vous que sur la page .aspx Toutes les balises sont correctement alignées. xxx


0 commentaires