SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010
-
27 nov. 2006 à 09:35
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010
-
28 nov. 2006 à 16:22
Bonjour,
J'ai inséré un userControl "monUserControl" dont l'ID est "monUserControl_1" dans un EditItemTemplate d'un FormView d'ID "MonFormView"
monUserControl contient une textbox "MaTextBox" sur laquelle je compte agir dans le code.
Dans la sub
MonFormView_DataBinding(....)Handles MonFormView.DataBinding
Je fais :
Dim monUserControl_1 As monUserControl
monUserControl_1 = CType(fvActi.FindControl("monUserControl_1"), monUserControl)
Dim MaTextBox As TextBox = CType(monUserControl1.FindControl("MaTextBox "), TextBox)
Eh Bien l'pplication me renvoie "Nothing", et ne trouve pas les contrôles, ni monUserControl, ni MaTextBox !!
J'ai essayé aussi en vain :
Dim MaTextBox As TextBox = CType(MonFormView.FindControl("MaTextBox"), TextBox)
Et aussi
Dim MaTextBox As TextBox = CType(MonFormView.Row.FindControl("MaTextBox"), TextBox)
Comment trouve-t-on une textbox d'un UserControl d'un EditItemTemplate d'un FormView ?
Merci de vos lumières
@+Gilles
A voir également:
Atteindre les contrôles d'un UserControl inséré dans un FormView
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010 28 nov. 2006 à 16:22
Bon, j'ai trouvé une astuce , pas très élégante , mais qui marche. Pour ceux que ça intéresse, la voici :
1. j'ai remarqué en affichant la source, que aucun contrôle de la page ne porte l'ID "monUserControl" ou "monUserControl1" ou même "MonFormView_monUserControl1". d'ou l'échec de la méthode findControl.
2. j'ai remarqué que la textBox avait l'IDClient : "MonFormView:monUserControl1:MaTextBox"
je la trouve donc avec :
Dim MaTextBox As TextBox = CType(Page.FindControl("MonFormView:MonUserControl1:MaTextBox"), TextBox)<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??> 3. J'adjoint une textbox invisible "MaTbInvisible" à l'EditItemTemplateet je la lie à la source de données avec u ne propriété Text ='<%# Bind("MonChamp") %>'
4.Enfin , dans le page_load je recopie le contenu de MaTextBox dans MaTbInvisible
Dim MaTextBox As TextBox = CType(Page.FindControl("MonFormView:MonUserControl1:MaTextBox"), TextBox)
IfNot IsNothing(MaTextBox) Then
Dim MaTbInvisible As TextBox = CType(MonFormView.FindControl("MaTbInvisible"), TextBox)
MaTbInvisible.Text = MaTextBox.Text
EndIf
Pas élégant, ça fait vraiment celui qui maitrise pas, mais quand on trouve pas...
Si quelqu'un peut me dire pourquoi la liaison n'est pas bidirectionnelle, quand même...
@+Gilles
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 27 nov. 2006 à 20:27
Bonsoir,
il doit existe un evenement itemcreating ou created et tu dois trouver dans e ce qu'il te faut, en tout cas je passerais par cet event plutot que le databinding
et dans l'user control, sa source est:
asp:TextBox ID="Matextbox" runat="server" Text='<%# Bind("MonChamp") %>'(j'ai BLUFFE) et dans le code client, c"est identique, ID mises à part.
or dans la première, il y a liaison bi-directionnelle (affichage ET UPDATE) tandis que dans la seconde il n'y a qu'affichage, l'UPDATE ne s'exécute pas.
d'où mon idée de rétablir la liaison bidirectionnelle dans le databinding, je ne sais pas encore comment !
Au fait, j'ai bien essayé, le e de MonFormView.itemCreated ne me propose pas grand chose d'intéressant. le problème reste entier.