none
[WSS 3.0 + Webpart + VS2005] Afficher une nouvelle page RRS feed

  • Question

  • Bonjour,

    Actuellement je développe un webpart.
    Dans celui-ci, j'ai un bouton "Aperçu". J'aimerais que ça affiche ds une nouvelle fenêtre un aperçu que j'ai généré ds un fichier html.

    J'ai fait différents essais, mais sans succès.

    Voici un exemple:

    HttpResponse Reponse = this.Context.Response;  
     
    Reponse.Write("<body><script>window.open(fichier.htm);</script></body>"); 

    Mais ça ne fait que me recharger la page.


    J'ai fait différentes recherches, mais je ne trouve pas les réponses très claires.

    Merci d'avance.
    mardi 17 mars 2009 10:00

Réponses

  • Comme je m'y connais un peu, je peux t'assurer que le mien est mieux :)

    En fait le tiens ajoute le code passé en argument en haut du HTML de la page, donc la structure de ta page sera (en schematisant) :

    <body><script>window.open('chemin_du_fichier');</script></body> 
    <html><body>........</body></html
    La structure HTML de la page est donc invalide.

    Avec mon bout de code, tu rajoutes une instruction javascript en bas de page, nettement plus propre.

    D'autre part, le document .htm en question n'a rien à faire dans le répertoire de la web application. Il y a 4 alternatives qui me viennent immediatement à l'esprit (dans l'hypothèse où il s'agit d'un fichier unique), :
    - mettre le fichier .htm dans un site SharePoint
    - le mettre dans le répertoire 12\TEMPLATE\LAYOUTS (déployable vdans le même wsp que ta web part)
    - mettre le fichier en ressource d'assembly et récupérer son URL via Page.ClientScript.GetWebResourceUrl()
    - mettre le fichier .htm dans une web application non sharepoint

    La 3ème méthode est  pour moi la plus sexy  (à débattre) et la plus facilement déployable car le fichier .htm est intégré dans la même assembly que la webpart mais peut-être plus difficile à appréhender si tu débutes :
    http://support.microsoft.com/default.aspx/kb/910442
    http://aspnet.4guysfromrolla.com/articles/080906-1.aspx

    Quoi qu'il en soit, en tant que développeur il est préférable de ne pas toucher au répertoire d'une web application SharePoint
    http://blogs.developpeur.org/anouvel
    mardi 17 mars 2009 16:09

Toutes les réponses

  • Bonjour,

    il vaut mieux enregistrer un bout de javascript dans la page courante (sans pour autant la remplacer), qui ouvrira la pop-up.

    Quelquechose comme ça devrait marcher :

    Page.ClientScript.RegisterStartupScript(typeof(Page), "openfile""window.open('http://domain/fichier.htm');"true); 
     

    http://blogs.developpeur.org/anouvel
    mardi 17 mars 2009 10:53
  • En fait le fichier que j'aimerais bien afficher se trouve dans le répertoire suivant:
    C:\Inetpub\wwwroot\wss\VirtualDirectories\30000\layouts\Apercu.htm
    C'est pas très propre, mais c'est le seul moyen que j'ai trouvé pour pouvoir lire le contenu du fichier htm (je n'ai pas réussi qd je le l'avais rajouté ds mon site Sharepoint).

    J'ai essayé le code que tu m'as donné:
     - Pour le fichier dont j'ai mentionné l'emplacement plus haut ça ne marche pas.
     - Par contre si c'est un fichier de mon site, ça l'affiche bien.

    est-il possible d'ouvrir, ds une nouvelle fenêtre, le fichier qui se trouve ds mon répertoire "C:\Inetpub\wwwroot\wss\VirtualDirectories\30000\layouts\"  ?

    Comme je ne m'y connais pas trop, j'aimerais savoir quel est le mieux entre le code que j'ai mis et celui que tu m'as donné ?

    Merci d'avance.
    mardi 17 mars 2009 14:19
  • Comme je m'y connais un peu, je peux t'assurer que le mien est mieux :)

    En fait le tiens ajoute le code passé en argument en haut du HTML de la page, donc la structure de ta page sera (en schematisant) :

    <body><script>window.open('chemin_du_fichier');</script></body> 
    <html><body>........</body></html
    La structure HTML de la page est donc invalide.

    Avec mon bout de code, tu rajoutes une instruction javascript en bas de page, nettement plus propre.

    D'autre part, le document .htm en question n'a rien à faire dans le répertoire de la web application. Il y a 4 alternatives qui me viennent immediatement à l'esprit (dans l'hypothèse où il s'agit d'un fichier unique), :
    - mettre le fichier .htm dans un site SharePoint
    - le mettre dans le répertoire 12\TEMPLATE\LAYOUTS (déployable vdans le même wsp que ta web part)
    - mettre le fichier en ressource d'assembly et récupérer son URL via Page.ClientScript.GetWebResourceUrl()
    - mettre le fichier .htm dans une web application non sharepoint

    La 3ème méthode est  pour moi la plus sexy  (à débattre) et la plus facilement déployable car le fichier .htm est intégré dans la même assembly que la webpart mais peut-être plus difficile à appréhender si tu débutes :
    http://support.microsoft.com/default.aspx/kb/910442
    http://aspnet.4guysfromrolla.com/articles/080906-1.aspx

    Quoi qu'il en soit, en tant que développeur il est préférable de ne pas toucher au répertoire d'une web application SharePoint
    http://blogs.developpeur.org/anouvel
    mardi 17 mars 2009 16:09
  •  

    Je te remercie pour ces précisions.

    En fait je suis passé pas un fichier aspx et j'y ajouté un webpart dans lequel
    j'utilise la méthode "Render".
    Dans celle-ci j'y ajoute mon apercu en html.

    Et je me sers de ton bout de code pour l'affichage.



    vendredi 20 mars 2009 08:04