[ASP.NET]5VB.NET]Recharger une page après un evenement click

chrisisis Messages postés 32 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 2 novembre 2004 - 28 juin 2004 à 11:39
chrisisis Messages postés 32 Date d'inscription mercredi 14 avril 2004 Statut Membre Derniè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

2 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
28 juin 2004 à 20:01
j'ai pas lu tout le code, mais si tu fais un simple response.redirect("webform1.aspx")
ca te va pas ?

Cyril
0
chrisisis Messages postés 32 Date d'inscription mercredi 14 avril 2004 Statut Membre Derniè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 



Voilà, Voilà
0