2010-12-20 2 views
0

Je tente d'expliquer mieux. J'ai un contrôle d'utilisateur dans la page, et à l'intérieur j'ai UC2 (pop-up modale). Et j'essaye de réaliser ceci: Quand je ferme UC2 (modal) j'essaye de mettre à jour quelques champs sur UC1. Et cela fonctionne très bien pour un (je UC2 (modal) et sur le bouton Enregistrer OnClientClick = "SaveInfoCI()"), et UC1 sur la pageChamp de mise à jour JavaScript dans un autre UserControl

fonction

SaveInfoCI() { document.getElementById (» <% = frmData.FindControl ("txtImplementingCI"). ClientID%> "). value = document.getElementById (" <% = UC2.GetClientID%> "). value; }

mais parce que je réutilise ce contrôle dans un autre endroit je veux mettre à jour un autre champ. Fondamentalement maintenant j'ai 3 fonction JS qui mettent à jour 3 champs. Et j'essaie quand je clique sur sauvegarder dans UC2 (modal) je dois exécuter un de ces 3 javascript f, pour mettre à jour le champ droit. Je ne veux pas avoir 3 même UC avec la différence que dans OnClientClick = "SaveInfoCI()

+0

envisagez-vous d'utiliser une bibliothèque javascript comme jquery? Cela pourrait améliorer votre javascript. Ensuite, je suggère de séparer votre javascript de votre code codebehind, vous pouvez à la place avoir votre javascript pour rechercher l'identifiant dans un champ caché ou spécifier avec les noms de classe. –

Répondre

0

Deux problèmes:.. Tout d'abord, votre syntaxe est désactivée, quand à l'intérieur du code derrière vous ne pouvez pas utiliser le <%= comme celui-ci

problème en second lieu, au moment où ce script est exécuté (en haut de la page) les éléments n'existe pas encore. Vous devez changer la valeur en cas de chargement de la page côté client.

donc, cela devrait fonctionner, Bien qu'il soit préférable de faire côté serveur:

sb.Append("window.onload = function() { document.getElementById('" + frmData.FindControl("txtTextBox").ClientID + "').value = document.getElementById('" + MyUserControl.GetJs + "').value; };</") 

De plus, vous n'avez vraiment pas besoin de StringBuilder ici. Utilisez plutôt une chaîne ordinaire.

+0

Tnx pour la réponse.S'il vous plaît vérifier sur le dessus – amchoni

+0

@ziks modifier votre message original avec vos nouveaux détails et supprimer votre réponse. Personnellement, je n'ai aucune idée de ce qui se passe, j'essaierai d'y plonger à nouveau quand j'aurai plus de temps. –

Questions connexes