2012-01-28 69 views
0

如何在C#中以編程方式設置自定義webpart屬性的值。在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

+0

嗯...如果你想您的自定義WP適應或更改數據按照誰登錄了,你應該寫在WP的代碼,而不是外界揭露它,然後試圖將其設置。 – Sandeep 2012-01-30 03:36:28

回答

0

嘗試myWebPart.Update(),而不是myWeb.Update()

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(); 
     } 
相關問題