IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Récupérer le contenu html d'un contrôle


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Récupérer le contenu html d'un contrôle
    Bonjour à tous.

    Je me heurte à un petit souci pour finaliser mon outils. Je fabrique du contenu pour le mettre dans un DIV et je voudrais récupérer la chaine HTML qui qui se met dedans. Je tente de le faire avec la propriété InnerHtml mais ça me sort une exception et je n'arrive pas à comprendre si c'est parce que je le fais trop tôt ou parce je l'emploi mal.
    Je vous présente mon code behind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
     
            'Code pour afficher la rotation
            Dim LParam(0) As SqlParameter
            LParam(0) = New SqlParameter("", 0)
            Dim dt As DataTable = RetournerTableP("SELECT * FROM RotationDeLaSemaine ORDER BY Position_Perso", LParam)
            For Each dr As DataRow In dt.Rows
                Dim divPerso As New HtmlControls.HtmlGenericControl
                Dim imgPerso As New Image
                With imgPerso
                    .AlternateText = dr.Item("Nom_Heros")
                    .ImageUrl = "http://esport.ozouf.com/PersoRotation/Perso" & dr.Item("Id_Heros") & ".png"
                    .CssClass = "imgPerso"
                End With
                Dim txtPerso As New Label
                txtPerso.Text = dr.Item("Nom_Heros") & "<br>" & dr.Item("Type_Heros") & "<br>" & dr.Item("Univers") & "<br>" & dr.Item("Texte") & "<br>Dernière sortie le  : " & dr.Item("DerniereSortieP") & "<br>Il est sorti " & dr.Item("NB") & " fois depuis le début des rotations<br>"
                With divPerso
                    .Controls.Add(imgPerso)
                    .Controls.Add(txtPerso)
                End With
                divGlobalRotation.Controls.Add(divPerso)
            Next
            Dim strRotation As String = divGlobalRotation.InnerHtml.ToString
            txtChaineRotation.Text = strRotation
     
     
        End Sub
    Dans ma page j'ai un DIV que je rempli et le résultat est correct, ça me fait ce que je veux. Maintenant je voudrais afficher dans une TextBox la chaine contenu dans ce DIV (les deux dernières lignes de mon code).
    Donc je me demande si je fais bien la récupération de la chaine ou si je le fais trop tôt, à savoir dans le Init ?

    Merci pour votre aide.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Vu l'évènement le div n'a surement pas encore généré le code client, tu pourrais le récupérer dans un événement plus loin (PreRender par exemple) ou bien utiliser la méthode render du contrôle...

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.
    J'ai tenté dans un événement plus loin et j'ai le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
            txtChaineRotation.Text = divGlobalRotation.InnerHtml.ToString
        End Sub
     
        Protected Sub Page_PreRenderComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRenderComplete
            txtChaineRotation.Text = divGlobalRotation.InnerHtml.ToString
        End Sub
    J'ai testé l'un après l'autre et pas les deux en même temps, bien sûr.
    Impossible d'obtenir le contenu interne de divGlobalRotation, car le contenu n'est pas de type littéral.
    Ensuite je suis parti sur ton autre proposition mais je crois que je maitrise pas du tout ce que j'ai lu dans la documentation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim divRender As HtmlTextWriter
            divGlobalRotation.RenderControl(divRender)
            txtChaineRotation.Text = divRender.InnerWriter.ToString
    J'ai un message d'erreur le divRender en argument de la deuxième ligne :
    La référence d'objet n'est pas définie à une instance d'un objet.
    J'en déduis que je dois mal instancié l'objet mais je n'arrive pas à comprendre comment on fait et ce même en relisant la documentation. L'exemple qu'ils donnent n'est pas très clair, ils font des Sub de partout.

    Encore merci pour ton aide.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Je répond en c# car je ne connais pas la syntaxe en vb.net :

    Pour instancier le HtmlTextWriter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    StringWriter w = new StringWriter();
    HtmlTextWriter h = new HtmlTextWriter(w);

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci beaucoup, ça marche nickel.

    Voici le code final pour ceux qui le voudrait tout cuit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
            Dim swRotation As New StringWriter
            Dim htwRotation As New HtmlTextWriter(swRotation)
            divGlobalRotation.RenderControl(htwRotation)
            txtChaineRotation.Text = htwRotation.InnerWriter.ToString
    Et grâce à ça je récupère la chaine HTML incluant le DIV qui contient tout ce que j'ai créé.

    Merci beaucoup, grâce à ton aide mon outil est terminé et je peux copier coller mes chaines dans mes articles.

    Une excellente journée à toi
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Merci beaucoup, ça marche nickel.

    Voici le code final pour ceux qui le voudrait tout cuit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
            Dim swRotation As New StringWriter
            Dim htwRotation As New HtmlTextWriter(swRotation)
            divGlobalRotation.RenderControl(htwRotation)
            txtChaineRotation.Text = htwRotation.InnerWriter.ToString
    Et grâce à ça je récupère la chaine HTML incluant le DIV qui contient tout ce que j'ai créé.

    Merci beaucoup, grâce à votre aide mon outil est terminé et je peux copier coller mes chaines dans mes articles.

    Une excellente journée à vous
    Super que ca marche, un petit vote pour ma réponse aurait été sympa :p

  7. #7
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    ça tellement longtemps que j'ai déserté ce forum que je ne connais pas tous les nouveaux outils, désolé, mais j'ai cliqué sur ta réponse, c'est ça qu'il faut faire ?

    Mais ça sert à quoi ce truc ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par zooffy Voir le message
    mais j'ai cliqué sur ta réponse, c'est ça qu'il faut faire ?

    Mais ça sert à quoi ce truc ?
    Oui il faut cliquer sur le petit pouce vert a droite en-dessous du post. Cela permet de "recompenser" l'auteur de la reponse en lui donnant un point. De meme, en marquant la discussion comme resolue tu recompenses l'ensemble des participants.

    Pour plus d'info : Le grand mode d'emploi du forum, à lire si vous souhaitez tout savoir !
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le contenu HTML d'un JTextPane
    Par doobinay dans le forum Composants
    Réponses: 3
    Dernier message: 30/12/2010, 16h45
  2. [Système] Récupérer le contenu HTML d'une page Web
    Par zah.hicham dans le forum Langage
    Réponses: 7
    Dernier message: 13/02/2008, 03h53
  3. Récupérer contenu HTML généré
    Par Arnard dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/04/2007, 13h55
  4. [Tableaux] Récupérer le contenu d'une balise HTML
    Par StarNab dans le forum Langage
    Réponses: 2
    Dernier message: 01/09/2006, 12h38
  5. [Word] Récupérer le contenu d'un doc Word (text/image) -> sauvegarder en HTML
    Par budylove dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/05/2006, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo