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

Développement Sharepoint .NET Discussion :

Problème ajout WebPart via code behind sur une page d'une feature


Sujet :

Développement Sharepoint .NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Problème ajout WebPart via code behind sur une page d'une feature
    Bonjour,

    J'ai un petit souci pour ajouter une WebPart sur ma page via code behind..

    Voici le topo.
    J'ai un projet SharePoint 2010, dans lequel j'ai ajouté un module, et à ce module j'ai ajouté une page.
    C'est sur cette page que j'aimerais ajouter une WebPart (via code behind ou dans l'aspx, peu m'importe pour le moment, mais si j'arrive en code behind c'est mieux!).

    Voici ce que j'ai comme code qui devrait permettre d'ajouter la WebPart :
    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 void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            AddWebPartToPage("http://dev-sps1/", "/_FEATURES/DefaultPage_DefaultPage/CustomPages/HomePage.aspx");
        }
    }
     
    public static void AddWebPartToPage(string siteURL, string pageRelativeUrl)
            {
                using (SPSite site = new SPSite(siteURL))
                {
                    SPWeb web = site.RootWeb;
                    web.AllowUnsafeUpdates = true;
                    SPFile page = web.GetFile(pageRelativeUrl);
                    page.CheckOut();
                    using (SPLimitedWebPartManager wpmgr = page.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared))
                    {
                        XmlElement p = new XmlDocument().CreateElement("p");
                        p.InnerText = "Hello World : my custom webPart";
                        ContentEditorWebPart cewp = new ContentEditorWebPart();
                        cewp.Content = p;
                        wpmgr.AddWebPart(cewp, "Header", 0);
                    }
                    page.CheckIn(String.Empty);
                }
            }
    Code que j'ai trouvé ici :
    Add WebPart programmatically

    Résultat:
    Tout fonctionne... Mais je ne vois pas de WebPart sur ma page.

    Quelqu'un aurait-il une idée?!


    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Points : 884
    Points
    884
    Par défaut
    Citation Envoyé par atfximen Voir le message
    Tout fonctionne... Mais je ne vois pas de WebPart sur ma page.
    Donc ça ne fonctionne pas

    Tu as codé cela dans le code behind de la page en question ??

    Pourquoi tu ne codes pas cela dans feature receiver de ta solution qui déploie ton module ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par SONY30 Voir le message
    Donc ça ne fonctionne pas
    Quand je dis que ça fonctionne... Disons que ça ne plante pas, c'est déjà ça


    Alors pourquoi ce n'est pas dans le feature receiver...
    1) parce que je ne sais pas ce que tu entends pas "feature recevier"
    2) parce que je ne sais pas du tout comment faire, donc j'ai cherché sur le net et je n'ai trouvé à peu près que cette solution là.
    Mais je suis évidemment ouvert à toute proposition!

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Points : 884
    Points
    884
    Par défaut
    Ah...

    Alors commençons par le commencement, pourquoi exactement veux-tu rajouter cette WebPart toute "bête" dynamiquement ?
    Tu veux que son contenu diffère selon le contexte ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Alors...

    Sur ma page, j'utilise le contrôle RadDock de Telerik.
    Ce contrôle permet donc d'ajouter différent panels dockables sur des zones définies.
    Chacun de ces docks doit devenir un "conteneur de webpart", qui chargerait une webpart spécifique.
    L'utilisateur doit pouvoir ajouter lui-même des nouveaux panels (panels de types prédéfinis) et ces panels doivent donc charger la webpart associée au type du panel au runtime.

    C'est un peu plus clair?!

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Juste pour aider la communauté, au cas où

    Voici comment j'ai résolu le problème (voir en rouge les lignes que j'ai ajouté) :
    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
    using (SPSite site = new SPSite("siteURL"))
                {
                    SPWeb web = site.RootWeb;
                    SPFile page = web.GetFile("blabla");
    
                    web.AllowUnsafeUpdates = true;
                    web.Update();
    
                    using (SPLimitedWebPartManager wpmgr = page.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared))
                    {
                        XmlElement p = new XmlDocument().CreateElement("p");
                        p.InnerText = "Hello World";
                        ContentEditorWebPart cewp = new ContentEditorWebPart();
                        cewp.Content = p;
                        wpmgr.AddWebPart(cewp, String.Format("{0}_webPartZone", this.ID), 0);
                        wpmgr.SaveChanges(cewp);
                    }
    
                    web.AllowUnsafeUpdates = false;
                    web.Update();
                }

  7. #7
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Tu es sur que ton premier web.Update(); n'est pas en trop?

    Si tu veux faire un web.Update(); pour le ALlowUnsafeUpdate cela ne sert à rien
    Citation Envoyé par atfximen Voir le message
    Juste pour aider la communauté, au cas où

    Voici comment j'ai résolu le problème (voir en rouge les lignes que j'ai ajouté) :
    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
    using (SPSite site = new SPSite("siteURL"))
                {
                    SPWeb web = site.RootWeb;
                    SPFile page = web.GetFile("blabla");
    
                    web.AllowUnsafeUpdates = true;
                
    
                    using (SPLimitedWebPartManager wpmgr = page.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared))
                    {
                        XmlElement p = new XmlDocument().CreateElement("p");
                        p.InnerText = "Hello World";
                        ContentEditorWebPart cewp = new ContentEditorWebPart();
                        cewp.Content = p;
                        wpmgr.AddWebPart(cewp, String.Format("{0}_webPartZone", this.ID), 0);
                        wpmgr.SaveChanges(cewp);
                    }
    
                    
                           web.Update();
                           web.AllowUnsafeUpdates = false;
                   
                }
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  2. avec click sur un lien, ouvrir une image dans une page html
    Par Bydouille dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 17/10/2007, 20h40
  3. [XHTML] [débutant] Ouvrir une page dans une page xhtml
    Par wikers dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 14/02/2006, 16h20
  4. faire passer une variable d'une fct js à une page php
    Par harlock59 dans le forum Langage
    Réponses: 1
    Dernier message: 25/11/2005, 14h41
  5. Garder une dataset d'une page a une autre
    Par amika dans le forum Langage
    Réponses: 13
    Dernier message: 15/11/2005, 23h13

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