Bonjour,
Je recherche quelques explication sur le fonctionnement du databind
J'ai une page qui contient plusieurs contrôles utilisateurs, qui eux même contiennent des contrôles utilisateurs.
Pour lier les données et les mettre à jour, j'appelle databind
Et je rencontre quelques problèmes.
Par exemple :
Dans la page, j'ai :
uc_arbo pour l'arbo
uc_article pour les articles
uc_datalist
uc_formulaire
uc_textbox
uc_saveannule
uc_saveannule contient un bouton pour enregistrer et un bouton pour annuler
dans le script du bouton save_click, je regarde le parent que je transtype en uc_formulaire pour avoir accès à ses méthodes, en particulier une méthode de sauvegarde. saveFormulaire
try
ctype(me.parent, uc_formulaire).saveFormulaire
catch ex as Exception
end try
Sauf, qu'il m'est arrivé de perdre ce parent, je m''explique :
Si dans le contrôle utilisateur uc_arbo, j'essai de faire un databind de uc_article
Dans la fonction save_click du bouton du contrôle uc_saveannule, il y a une erreur
me.parent = nothing
uc_arbo contient un contrôle TreeView
Dans le script de changement de noeud
treeView_selectedNodeChanged
dim ouc_article as uc_article
dimiIdNoeudSelected as int32
try
iIdNoeudSelected = CType(oControlFlyTreeView.SelectedNode.Key, int32)
session.add(iIdNoeudSelected )
ouc_article = ctype(page.findControl("uc_article"), uc_article)
ouc_article.databind
catch ex as Exception
end try
Si je met toute ce code en commentaire, et que dans le databind de ce contrôle utilisateur, je vérifie si un noeud a été cliqué et que je met la valeur de ce noeud en session, et surtout que je n'appelle pas le databind de uc_article
Il n'y a pas d'erreur.
Je cherche à comprendre ce qui pourrait se passer dans un cas et pas dans l'autre, pour que me.parent= nothing.
Dans le page_load de la page aspx, j'appelle le databind de la page
page_load
me.databind
et dans tous les contrôles utilisateurs, je n'ai pas de page_load
je travaille uniquement avec la méthode databind
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Placez ici le code utilisateur pour initialiser la page
End Sub
'''<summary>Lie la source de données au contrôle serveur appelé et à tous ses contrôles enfants.</summary>
Public Overrides Sub DataBind()
appelle des fonctions
End Sub
Voilà, j'espère que j'ai été clair, ce n'est pas toujours facile d'expliquer par écrit.
Merci
Chrisisis