2009-08-30 11 views
4

J'ai besoin d'une zone de texte qui se ferme dans Formview inserttemplate via javascript.Obtenir un objet à partir de Formview avec javascript

deux return null:

$get('txtTitle'); 
document.getElementById("txtTitle"); 

Le problème est que formview n'est pas rendu sur la charge de forme ...

+0

pouvez-vous me dire ce que vous voulez accomplir? –

Répondre

7

Comme vous l'avez dit, le contenu de FormView sont rendus sur le serveur sur demande plutôt que sur chargement de la page. Cela dit, essayez ce code pour accéder aux contrôles dans le formview. Changez le nom de 'FormView' pour qu'il corresponde à votre ID de contrôle unique.

document.getElementById('<%=FormView.FindControl("txtTitle").ClientID%>'); 

Si nécessaire, Voici quelques événements utiles que vous pouvez utiliser pour enregistrer le javascript dans le code sous-jacent s'il y a des considérations cycle de vie.

L'événement ItemCreated est déclenché après la création de toutes les lignes dans un contrôle FormView. Cela peut se produire lorsque le contrôle est rendu pour la première fois ou lorsque l'utilisateur navigue vers un autre enregistrement. Vous pouvez utiliser cet événement pour fournir une méthode de gestion d'événements qui exécute une routine personnalisée, telle que l'ajout ou la modification du contenu d'une ligne, chaque fois que cet événement se produit.

Remarque: L'événement ItemCreated se produit avant que le contrôle FormView soit lié aux données. Pour modifier la valeur d'un champ lié, utilisez l'événement DataBound.

+0

lorsque j'exécute l'application, j'obtiens une erreur: La collection Controls ne peut pas être modifiée car le contrôle contient des blocs de code (c'est-à-dire <% ... %>). – dani

+0

Hmm., Cette erreur se produit seulement si mon code javascript dans la section d'en-tête, si je le déplace au corps cela fonctionne. pourquoi donc? – dani

+1

La différence ici est que les expressions <%= %> sont incorporées dans la sortie ASP.NET dans le cadre de la classe Parse Tree générée. si vous le voulez vraiment dans la tête de page, une alternative pourrait être d'essayer plutôt l'expression <%# %>, car elle est intégrée à l'exécution. Je n'ai aucun moyen de tester cela pour vous, mais cela pourrait fonctionner. – PortageMonkey

Questions connexes