none
Faire disparaitre une listViewWebPart RRS feed

  • Question

  • Bonjour,

    Pour une raison que vais vous épargner je souhaite faire la chose suivante : Lors de la consultation d'une liste, ajouter un bouton dans le menu "Paramêtres" qui fait la chose suivante : Il ajoute un menu similaire à celui de la vue de la liste (avec nouveau, actions...) et il fait "disparaître" la vue originale.

    Les deux premières parties ne posent pas de soucis, j'ai crée un bouton avec une feature et un post back sur le clic du bouton qui me permet de détecter le clic et de faire apparaitre le menu. Par contre pour fermer ou faire disparaitre la listViewWebPart originale, la je m'en sors pas !

            void item_OnPostBack(object sender, EventArgs e)
            {
                ListPostBackEventArgs myArgs = (ListPostBackEventArgs)e;
                MakeItemsDisappear tempPostBack = (MakeItemsDisappear)sender;
                SPWeb web = SPContext.Current.Web;
                SPList lst = SPContext.Current.List;
                bool unsafe_upd = web.AllowUnsafeUpdates;
                web.AllowUnsafeUpdates = true;
                web.Update();
                string current_view_url = SPContext.Current.ViewContext.View.Url;
                using (SPLimitedWebPartManager wp_coll = web.GetLimitedWebPartManager(current_view_url, System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared))
                {
                MyWebPart wp = new MyWebPart();
                wp_coll.AddWebPart(wp, "Principal", 0);
                
                for (int i = 0; i < wp_coll.WebParts.Count;i++ )
                {
                    if (wp_coll.WebParts[i].Title != "MyWebPart")
                    {
                        wp_coll.WebParts[i].Hidden = true; //ne marche pas
                        wp_coll.WebParts[i].Visible = false; //nemarche pas
                        wp_coll.CloseWebPart(wp_coll.WebParts[i]); //ne marche pas
                        wp_coll.SaveChanges(wp_coll.WebParts[i]);
                    }
                }
                  wp_coll.Dispose();        
                }
            }



    Toute aide sera appréciée, même un exemple plus simple sur "Comment faire disparaitre une webpart par le code dans une vue SharePoint" :)

    Merci.


    Guillaume
    mercredi 6 mai 2009 15:27

Réponses

  • Bonjour,

    Le code semble ok, je viens de faire tourner le code suivant dans une application console, ca a fonctionné..

    SPLimitedWebPartManager mgr = web.GetLimitedWebPartManager(url, PersonalizationScope.Shared);
    foreach(WebPart wp in mgr.WebParts){
       mgr.CloseWebPart(wp);
       mgr.SaveChanges(wp);
    }
    Avez-vous un message d'erreur qui pourrait nous aider à trouver ce qui ne va pas ?
    http://blogs.developpeur.org/anouvel
    mercredi 6 mai 2009 16:08

Toutes les réponses

  • Bonjour,

    Le code semble ok, je viens de faire tourner le code suivant dans une application console, ca a fonctionné..

    SPLimitedWebPartManager mgr = web.GetLimitedWebPartManager(url, PersonalizationScope.Shared);
    foreach(WebPart wp in mgr.WebParts){
       mgr.CloseWebPart(wp);
       mgr.SaveChanges(wp);
    }
    Avez-vous un message d'erreur qui pourrait nous aider à trouver ce qui ne va pas ?
    http://blogs.developpeur.org/anouvel
    mercredi 6 mai 2009 16:08
  • Bonjour,

    Merci beaucoup !

    Je n'avais pas de messages d'erreur mais en prenant votre code j'ai réalisé que mon erreur était tout simplement dans le type de webpart que j'utilisais, celles du système et non pas de Microsoft.SharePoint.WebPartPages ...

    Une erreur d'include stupide qui faisait que rien ne marchait !

    Merci ! C'est ok à présent.
    Guillaume
    jeudi 7 mai 2009 08:07