[ASP.NET]5VB.NET]Recharger une page après un evenement click
chrisisis
Messages postés32Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 2 novembre 2004
-
28 juin 2004 à 11:39
chrisisis
Messages postés32Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 2 novembre 2004
-
1 juil. 2004 à 09:25
Bonjour,
Je vais commencer par expliquer la structure de ma page, qui m'est imposée et que j'ai réalisée :
Webform1.aspx :
un UserControl uc_form qui charge dynamiquement à partir d'un fichier xml, des UserContrôles de différents types
Class WebForm1
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
uc_form.DataBind()
End Sub
Class uc_form
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
doChargeForm()
End Sub
Public Sub doChargeForm()
Try
oXmlDocumentForm = New XmlDocument
oXmlDocumentForm.load(Server.MapPath("formulaire.xml"))
oGestionForm = New Mond.cGestionForm(Server.MapPath("formulaire.xml"), oXmlDocumentForm)
arValeursProprietesControl = oGestionForm.doChargeForm()
lbl_form.Text = oGestionForm.LibelleForm
For Each arValeurs In arValeursProprietesControl
oTypeControl = CType(arValeurs.Item("type"), String)
Select Case oTypeControl
Case "extTextBox"
'chargement du contrôle utilisateur uc_textBox.ascx
oUc_TextBox = CType(LoadControl("uc_textBox.ascx"), uc_textBox)
Me.Controls.Add(oUc_TextBox)
end select
Next
end try
etc
end sub
Class uc_textBox
'chargement de 2 contrôles personnalisés et lisaison des données
'''<summary>Lie la source de données au contrôle serveur appelé et à tous ses contrôles enfants.</summary>
Public Overrides Sub DataBind()
setIdDivControlToolBar()
setDataSource()
loadTextBox()
loadToolBar()
End Sub
'click sur la barre d'outils du contrôle
Private Sub tbar_tbox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbar_tbox.Click
'Déclaration des variables ---
'index de l'item sélectionné
Dim iItemIndexSelected As Int32
Dim oItemSelected As DataRowView
Dim sAction As String
iItemIndexSelected = tbar_tbox.getItemIndexSelected()
oItemSelected = tbar_tbox.getItemSelected()
sAction = CType(oItemSelected.Item("action"), String)
Select Case sAction
Case "haut"
GestionForm.doMoveControlOnForm(TypeControl, Me.ID)
Case "bas"
GestionForm.doMoveControlOnForm(TypeControl, Me.ID)
Case "supprime"
If GestionForm.doDeleteControlToForm(TypeControl, Me.ID) Then
'suppression du noeud dans le fichier xml
End If
Case "desactive"
GestionForm.doChangeActiveControlOnForm(TypeControl, Me.ID)
End Select
End Sub
J'ai une classe cGestionForm qui charge le fichier xml, qui le modifie, etc
Lorsque je clique sur la barre d'outil du contrôle uc_textBox, l'évenement click est levé, la méthode tbar_tbox_Click est appellé
Suivant le bouton cliqué sur la barre d'outils, une action est gérée comme la suppression du contrôle uc_textbox lié à cette barre d'outil
La modification est apportée dans le fichier xml.
Mon problème :
Tout ce passe bien, il ne reste qu'à réafficher tous les contrôles du formulaire, donc recharger la page à partir du fichier xml ainsi modifié.
Mais comment ???
J'ai essayé d'accéder au page.load, mais c'est le page_load de webform1.aspx que je dois atteindre, et je n'y arrive pas.
Une idée.
Je pourrais lever des évènements jusqu'au webform ou au uc_form, mais mon chef de projet ne trouve pas cette solution très ...
Merci de votre aide
_________________
Chrisisis
A voir également:
[ASP.NET]5VB.NET]Recharger une page après un evenement click
chrisisis
Messages postés32Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 2 novembre 2004 1 juil. 2004 à 09:25
En fait, il est possible de recharger les contrôles en utilisant la méthode databind.
Et justement comme je lis un fichier xml pour récupérer la liste des contrôles à charger, cela fonctionne très bien.
Voici une partie du code :
je n'utilise plus que le page_load du webform.aspx
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.DataBind()
End Sub
Public Overrides Sub DataBind()
'Placez ici le code utilisateur pour initialiser la page
uc_form.DataBind()
End Sub
Et les méthodes databind de mes contrôles.
Et dès que je modifie l'xml, j'appelle la méthode databind du parent, qui est mon contrôle uc_form.
'''<summary>Gestion de l'évènement Click sur un item de la ToolBar.</summary>
Private Sub tbar_tbox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbar_tbox.Click
'Déclaration des variables ---
'index de l'item sélectionné
Dim iItemIndexSelected As Int32
Dim oItemSelected As DataRowView
Dim sAction As String
iItemIndexSelected = tbar_tbox.getItemIndexSelected()
oItemSelected = tbar_tbox.getItemSelected()
sAction = CType(oItemSelected.Item("action"), String)
Select Case sAction
Case "monter"
If GestionForm.doMoveControlOnForm(TypeControl, Me.ID, sAction) Then
End If
Case "descendre"
If GestionForm.doMoveControlOnForm(TypeControl, Me.ID, sAction) Then
End If
Case "supprimer"
If GestionForm.doDeleteControlToForm(TypeControl, Me.ID) Then
End If
Case "desactiver"
If GestionForm.doChangeActiveControlOnForm(TypeControl, Me.ID) Then
End If
End Select
Session.Add("IdControlToolBarOpen", Me.ID)
Parent.DataBind()
End Sub