добавление пользовательского свойства в веб-часть с помощью пользовательской части инструментов - PullRequest
0 голосов
/ 26 января 2010

Я пытаюсь добавить пользовательское свойство к своей веб-части, как показано ниже:

        [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; }
        }

Но внутри веб-части я также переопределяю метод GetToolParts (), как показано ниже, с моей собственной настраиваемой частью инструментов:

public override ToolPart [] GetToolParts () {

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

Мне нужно отобразить свою настраиваемую часть инструментов (RSSCountrySettings) и мою настраиваемую собственность (путь к списку RSS) под catergory Settings.

Любые идеи, как мне это сделать, я могу получить только один, но не оба для отображения ...?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2012

Вы должны добавить CustomPropertyToolPart в список инструментов. Как это:

    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();
    } 
0 голосов
/ 31 января 2011

Вы не используете наборы инструментов базового класса. Попробуйте вместо этого:

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

Причина, по которой вам нужно это сделать, заключается в том, что базовый класс генерирует часть инструментов для вашего пользовательского свойства. Однако вы не разрешаете ему добавлять эту часть инструментов в коллекцию. Таким образом, вы должны получить наборы инструментов базового класса как коллекцию, а затем добавить свои. Это опасность переопределения существующего метода. Проверьте эту ссылку для получения дополнительной информации

...