2

这是我在场解决方案中保存 Web 部件属性的方式

SPContext.Current.Web.AllowUnsafeUpdates = true;
SPFile file = SPContext.Current.File;
SPLimitedWebPartManager mgr = file.GetLimitedWebPartManager(PersonalizationScope.Shared);

for (int index = 0; index < mgr.WebParts.Count; index++)
{
    if (mgr.WebParts[index].ID == this.ID)
    {
        ((MyWebpartType) mgr.WebParts[index]).MyStringProperty = "Hello World!";
        mgr.SaveChanges(mgr.WebParts[index]);
    }
}
SPContext.Current.Web.AllowUnsafeUpdates = false;

工作正常。

现在我必须在沙盒解决方案中实现相同的目标,但没有SPLimitedWebPartManager可用的。

那么如何通过沙盒解决方案 webpart 中的代码更改 webpart 属性?

4

2 回答 2

1

找到解决方案,SetPersonalizationDirty()在 webpart 中调用保存所有属性。

于 2013-03-14T06:41:02.470 回答
0

您可以定义自己的自定义 webpart 属性,如下所示:

 public partial class BannerSlider : System.Web.UI.WebControls.WebParts.WebPart
    { 
        [WebBrowsable(true),
        Personalizable(PersonalizationScope.Shared),
        WebDescription("My WebPart Property"),
        Category("Custom Properties"),
        WebDisplayName("My WebPart Property")]
        public string MyProperty
        {
            get { return __myProperty; }
            set { _myProperty= value; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
             this.MyProperty = "Hello World";
于 2013-03-14T06:22:54.640 回答