0

私は PublishingLayoutPage を持っており、いくつかの Web パーツを非表示にする必要があるクエリ パラメータに依存しています。

しかし、私は今これを行う方法を知りません。私が問題を正しく理解していれば、SPLimitedWebPartManager はすべてのユーザーに対して Web パーツを非表示にするためです!

            using (SPLimitedWebPartManager mgr = file.GetLimitedWebPartManager(PersonalizationScope.Shared))
                        {
                            try
                            {
                                SPLimitedWebPartCollection webparts = mgr.WebParts;
                                foreach (System.Web.UI.WebControls.WebParts.WebPart wp in webparts)
                                {
                                    if (wp is MyWebpart && !isShowWebpart)
                                    {
wp.Hidden=true;
                                        mgr.SaveChanges(wp );
                                    }
                                }

Webパーツを非表示にして、ページ上の特定のケースに対してのみコンテンツをレンダリングすることを許可しない方法は?

4

1 に答える 1

1

これを Load/PreRender/適切な場所に配置できるようです:

    List<string> webPartTitlesToHide = new List<string>();
    webPartTitlesToHide.Add("Long Title");
    webPartTitlesToHide.Add("Long Content");
    webPartTitlesToHide.Add("Long Footer");


    if (Request["view"] == "short")
    {
        WebPartManager wpm = WebPartManager.GetCurrentWebPartManager(this);
        foreach (WebPart wp in wpm.WebParts)
        {
            if (webPartTitlesToHide.Contains(wp.Title))
            { 
                wpm.CloseWebPart(wp);
            }
        }
    }

明らかに、非表示にする Web パーツを選択するためのより良い方法があると思われますが、これは単なる例です。

于 2012-09-26T14:39:18.757 に答える