【问题标题】:adding custom property to webpart with a custom toolpart使用自定义工具部件将自定义属性添加到 Web 部件
【发布时间】:2012-11-22 22:35:04
【问题描述】:

我正在尝试向我的 Web 部件添加自定义属性,如下所示:

        [Personalizable(PersonalizationScope.Shared)]
        [WebBrowsable(true)]
        [System.ComponentModel.Category("Settings")]
        [WebDisplayName("RSS List Path")]
        [WebDescription("")]
        public string RSSListURL
        {
            get
            {
                if (_myListURL == null)
                {
                    _myListURL = "http://server2003dev/dev/";
                }
                return _myListURL;
            }
            set { _myListURL = value; }
        }

但在 webpart 中,我还使用自己的自定义工具部件覆盖了 GetToolParts() 方法,如下所示:

公共覆盖 ToolPart[] GetToolParts() {

    return new ToolPart[] { new RSSCountrySettings(), new WebPartToolPart() };
}

我需要在类别设置下显示我的自定义工具部分(RSSCountrySettings)我的自定义属性(RSS 列表路径)

任何想法我如何做到这一点,我只能得到一个但不能同时显示...?

【问题讨论】:

    标签: sharepoint-2007 web-parts


    【解决方案1】:

    您没有使用基类的工具部件。试试这个:

        public override ToolPart[] GetToolParts()
        {
                var result = new List<ToolPart>() ;
                var toolparts = base.GetToolParts();
                result.AddRange(toolparts.ToList());
                result.Add(new WebPartToolPart());
                return result.ToArray();
        }
    

    您需要这样做的原因是基类为您的自定义属性生成了一个工具部件。但是,您不允许它将该工具部件添加到工具部件集合中。因此,您必须将基类的工具部分作为一个集合,然后将您的工具部分也添加到其中。这就是覆盖现有方法的危险。查看this link 了解更多信息

    【讨论】:

      【解决方案2】:

      您必须将 CustomPropertyToolPart 添加到 toolParts 列表。像这样:

          public override Microsoft.SharePoint.WebPartPages.ToolPart[] GetToolParts()
          {
              List<ToolPart> list = new List<ToolPart>();
              list.AddRange(base.GetToolParts());
      
              // adds custom controls            
              result.Add(new WebPartToolPart()); 
      
              // adds default controls for properties marked with [WebBrowsable(true)]
              list.Add(new CustomPropertyToolPart()); 
              return list.ToArray();
          } 
      

      【讨论】:

        猜你喜欢
        • 2015-06-11
        • 1970-01-01
        • 2011-06-18
        • 2012-04-14
        • 2014-11-08
        • 2011-03-02
        • 2011-06-13
        • 2010-10-11
        • 2014-04-08
        相关资源
        最近更新 更多