Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RECUPERER LE RENDU D'UN CONTROLE


Information sur la source

Catégorie :Chaînes de caratères Source .NET ( DotNet ) Classé sous : render, control, ajax, clientcallback, callback Niveau : Débutant Date de création : 07/05/2005 Date de mise à jour : 05/07/2005 16:03:08 Vu : 13 399

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


Description

Dans certains cas, il est interressant de récuperer le rendu, c'est à dire le code html, qu'un controle génére.

Je me suis servis de cette astuce, dans ma source sur le clientCallBack (http://www.aspfr.com/code.aspx?id=31245) en effet, lors du retour coté client du CallBack, je ne peux pas ecrire directement du HTML dans la page, mais je dois renvoyer une string, puis du javascript ecrit le code HTML dans la page.

Il existe aussi plein d'autres cas pour lesquels ca devrait servir.

Le fonctionnement du code n'a rien d'extraordinaire, j'ecris le rendu dans un stringwriter via la méthode RenderControl de l'objet Control
 

Source

  • Dim sw As New System.IO.StringWriter()
  • Dim htw As New HtmlTextWriter(sw)
  • Me.LeControl.RenderControl(htw) 'avec LeControl, le control que vous avez bien sur instancié
  • htw.Flush()
  • return sw.ToString()
        Dim sw As New System.IO.StringWriter()
        Dim htw As New HtmlTextWriter(sw)
        Me.LeControl.RenderControl(htw) 'avec LeControl, le control que vous avez bien sur instancié
        htw.Flush()
        return sw.ToString()

Conclusion

Des problèmes, des remarques ?

la section commentaire est la pour ca :)
 

Historique

05 juillet 2005 16:03:09 :
MAJ

Commentaires et avis

signaler à un administrateur
Commentaire de Jamesbound le 17/01/2006 19:40:35

Excellent! En plein ce que je cherchais Merci!!!

signaler à un administrateur
Commentaire de armoramour le 07/02/2007 01:31:37

Bonjour,

Testé avec une page construite en utilisant une page "master"... l'appel à RenderControl provoque une erreur de type "il faut que le contrôle soit inclus dans un form avec runat=server"...

Je n'arrive pas à contourner ce problème.

Bien à vous

signaler à un administrateur
Commentaire de jesusonline le 08/02/2007 11:40:12 administrateur CS

Bonjour il suffit simplement de mettre ton controle dans une balise form, sinon cherche sur ce site j'ai déjà parlé de ce problème et expliqué comment cela fonctionne.

signaler à un administrateur
Commentaire de armoramour le 08/02/2007 11:53:59

Merci pour ta réponse. J'ai trouvé la solution cette nuit : je voulais récupérer le rendu "complet" d'un gridview, ce qui n'est pas possible (mais je ne le savais pas) le rendu de se contrôle se faisant ligne par ligne, aussi pour pallier à ce problème, j'ai construit un tableau dynamique à l'aide de "repeater" et j'obtiens exactement ce que je voulais : ne pas créer à la "main" ce qui existait déjà.

La méthode RenderControl avec GridView fonctionne ainsi tab.Rows(x).RenderControl(flux)

Merci encore Nath

signaler à un administrateur
Commentaire de jesusonline le 08/02/2007 12:00:33 administrateur CS

Hum, ce que tu me dis me parait étrange ... si tu fais un render sur un gridview je pense qu'il le fait complétement, il faudrais que je regarde d'avantages.

signaler à un administrateur
Commentaire de armoramour le 08/02/2007 16:43:24

Je n'arrive plus à retrouver "mes sources" microsoft confirmant que les gridview, formview, datalist donne le "rendu html" seulement ligne par ligne et sous forme <tr> <td> </td> </tr>...

J'ai testé et vérifié, c'est exactement le comportement que j'ai constaté, ligne par ligne le rendu html t'envoie un tableau (sans mise en form, tu demandes le rendu du gridview : tu lèves une exception le gridview doit être dans "la balise form runat=server" ... (il y est déjà !)

Aucun problème avec le repeater... ça fonctionne parfaitement.

Si tu trouves la solution pour le gridview. Fais moi signe Merci

Nath

signaler à un administrateur
Commentaire de jesusonline le 08/02/2007 17:03:08 administrateur CS

OK, je viens de comprendre ... il suffit simplement de surcharger la méthode VerifyRenderingInServerForm de la page (merci Reflector :-)) tu peux en savoir plus ici : http://blogs.codes-sources.com/cyril/archive/2005/10/05/11985.aspx

signaler à un administrateur
Commentaire de armoramour le 08/02/2007 17:17:40

Je ne suis pas certaine de récupérer mon "tableau mis en forme et avec les données liées" de cette façon : la récupération des contrôles étant faite en pre-init... m'enfin, lorsque j'aurais un peu de temps je vérifierai cette formule car elle est intéressante d'un point de vue "générique".

Merci à toi d'avoir pris le temps de "fouiller"

Nath.

signaler à un administrateur
Commentaire de jesusonline le 08/02/2007 17:34:31 administrateur CS

Il me semble bien que si, il suffit de faire un override sur le page_load et de le laisser vide, c'est cette méthode qui vérifie si le controle est dans un form.

override void VerifyRenderingInServerForm(){
    // on ne lance jamais d'exception !
}

Si tu regardes dans Reflector tu verras comment ca fonctionne et qui appelle la méthode, tu y decouvriras pleins de choses interessante.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Control ajax Reorderlist [ par yanis7518 ] Salut a tous.Quelqu'un aurait-il deja utilisé le control ajax reorderlist??? parce que j'arrive pas a faire comme dans l'exemple donner sur le site.en ajax control toolkit et formview ca coince [ par jirap ] Bonjour,ValidatorCalloutExtender, nouveauté dans les objets d'AjaxControlToolkit fonctionne du feu de dieu, dans un formulaire simple. Mais dès qu'il comment installer le toolkit ? [ par hay2006 ] salut,je veins de decouvrir Ajax et ses possibiltés de merveilles avec son control toolkit.mais malheureusement, je ne sias pas comment l'installer po Expression reguliere et mise en forme d'une ValidatorCalloutExtender (ajax Control Toolkit) [ par nicolas4200 ] Bonjour à tous,Je me permet de vous solliciter à nouveau afin de résoudre deux soucis qui ont un rapport avec la validation.1/Le premier concerne les ajax master page/redirect [ par foufoulol ] Bonjour, Est-il possible de passer d'une page héritant d'une masterpage a une autre héritant du même masterpage sans chargement de page ? J'ai utilisé controls et événements [ par catamenia ] Bonjour,Je fais un control qui hérite de Menu.  Comment puis je savoir si mon control est abonné à l'événement MenuItemClick? Merci Utilisation de serie dans Control Chart [ par fgo ] Bonjour à tous,J'utilise le Chart Control pour visualiser en  'Real TIme' des données stockées dans une BD MySql comme dans l"exemple suivant qui cont Configuration du control menu (a:active ou itemSelected) [ par ordiminnie ] Bonjour, Je pose ma question aux habitués de asp.net et du controle menu. Mais les autres aussi peuvent répondre...toutes les contributions sont les b ajax extender et scrollbar [ par foufoulol ] Bonjour, J'ai des extender d'autocompletion et des calendar extender dans une listview. Tout marche trés bien sauf lorsque j'ai un scrollbar horizont Control asp crée dynamiquement en c# [ par taikibaybay ] BonjourJ ai crée une page ASP.net 2.0 , j'ai un accordion qui contient mes controls crée dynamiquement , textbox , dropdowslist qui sont des enfants d


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,920 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.