使用自定义工具部件向webpart添加自定义属性

时间:2010-01-26 15:00:34

标签: sharepoint-2007 web-parts

我正在尝试将自定义属性添加到我的webpart中,如下所示:

        [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()方法,如下所示:

public override ToolPart [] GetToolParts()     {

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

您需要执行此操作的原因是基类为您的自定义属性生成工具部件。但是,您不允许它将该工具部件添加到toolpart集合中。因此,您必须将基类的工具部分作为集合,然后在那里添加您的工具。这是覆盖现有方法的危险。查看this link以获取更多信息

答案 1 :(得分:0)

您必须将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();
    }