0

我有 PublishingLayoutPage 并且取决于查询参数,我应该隐藏一些 webpart。

但我现在不知道如何做到这一点。因为如果我正确理解问题,SPLimitedWebPartManager 将为所有用户隐藏 webpart!

            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 );
                                    }
                                }

如何隐藏 webpart 并且不允许仅针对页面上的特定情况呈现内容?

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 回答