добавление настраиваемого свойства в веб-часть с помощью настраиваемой панели инструментов

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

        [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) под настройками категории.

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


person test    schedule 26.01.2010    source источник


Ответы (2)


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

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

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

person CamronBute    schedule 31.01.2011

Вам необходимо добавить 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();
    } 
person Serhiy    schedule 22.11.2012