在c#中设置自定义webpart属性的值

时间:2012-01-28 20:11:58

标签: sharepoint-2010

如何在C#中以编程方式设置自定义webpart属性的值。

SPSecurity.RunWithElevatedPrivileges(delegate()

 {
   using (SPSite SiteCollection = new SPSite(mySiteGuid))

   {
      SPWeb myWeb = SiteCollection.OpenWeb(myWebGuid);

      myWeb .AllowUnsafeUpdates = true;
      Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager mgr = null;
      mgr = myWeb.GetLimitedWebPartManager    ("default.aspx",System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);

      foreach (System.Web.UI.WebControls.WebParts.WebPart myWebPart in mgr.WebParts)
        {

         if (myWebPart.Title == "Other Webpart Name")
          {
           myWebPart.Visible = ! myWebPart.Visible;
           myWeb.Update();
           break;
          }
        }
}

});

我在webpart类型字符串中有一个自定义属性来获取用户的输入。 我想从c#更新属性的值。 有没有办法设定价值?

TIA

2 个答案:

答案 0 :(得分:0)

尝试使用myWebPart.Update()代替myWeb.Update()

答案 1 :(得分:0)

也许答案有点晚了,但在这里我让我用了一段代码。

        var webCollection = new SPSite("http://mySharePointSite").AllWebs;
        foreach (SPWeb web in webCollection)
        {
            var landingPageReference = @"/Pages/default.aspx";
            var page = web.GetFile(landingPageReference);
            if (!page.Exists)
                continue;

            page.CheckOut();
            var spLimitedWebPartManager = web.GetLimitedWebPartManager(page.ServerRelativeUrl, PersonalizationScope.Shared);
            foreach (WebPart webPartItem in spLimitedWebPartManager.WebParts)
            {
                if (webPartItem.Title.Equals("myWebPartTitle"))
                {
                    // Specify Properties to change here
                    webPartItem.ChromeType = PartChromeType.Default;
                    webPartItem.Description = "AGAIN CHANGED";

                    // Save made changes
                    spLimitedWebPartManager.SaveChanges(webPartItem);
                    break;
                }
            }
            page.CheckIn("Add Comment if desired");
            page.Publish("Add Comment if desired");
            web.Update();
            web.Dispose();
        }