Элемент управления TreeView в SharePoint - не обновляется при обновлении свойств веб-части - PullRequest
0 голосов
/ 05 января 2011

Я пытаюсь создать веб-часть, которая содержит элемент управления TreeView.У меня есть свойство bool веб-части MyCheckbox, и я использую его, чтобы определить, какие узлы должны отображаться в древовидной структуре.

Проблема, с которой я сталкиваюсь, заключается в том, что при изменении свойства, отображаемого в свойствах веб-части(«Изменить общую веб-часть ..»), Bool MyCheckBox и нажмите «ОК», Treeview не обновляется.Однако, если я затем перехожу на страницу, древовидное представление обновляется.

Я объявляю класс следующим образом, используя Treeview и его корневой узел в качестве переменных-членов:

public class MyWebPart : System.Web.UI.WebControls.WebParts.WebPart
{
    private TreeView tree = new TreeView();
    private TreeNode rootNode; 

    [WebBrowsable(true)]    
    [Personalizable(PersonalizationScope.Shared)]
    public bool MyCheckBox
    {
        get { return _myCheckBox; }
        set { _myCheckBox = value; } 
    }

    private bool __myCheckBox = false;


    public MyWebPart()
    {
    }

    public override void RenderControl(HtmlTextWriter writer)
    {
        tree.RenderControl(writer);
    }

    protected override void CreateChildControls()
    {
        rootNode = new TreeNode("ExampleRootNode");

        for ( int x = 0; x < 3; x++) 
        {
            TreeNode listNode = new TreeNode(x.ToString());
            rootNode.ChildNodes.Add(listNode);
        }

        if (_myCheckBox) 
        { 
            TreeNode listNode = new TreeNode("Final entry");
            rootNode.ChildNodes.Add(listNode);
        }

        tree.Nodes.Add(rootNode);
        this.Controls.Add(tree);           
    }

    protected override void Render(HtmlTextWriter writer)
    {           
        base.Render(writer);
    }
}

IЯ пробовал проверить обратную передачу, очистить список и миллион других вещей.Я уверен, что я что-то упустил!

1 Ответ

0 голосов
/ 05 января 2011

Это связано с жизненным циклом страницы / элемента управления ASP.NET. Запись свойств из редактора (свойство browsable в основном имеет созданный раздел редактора на лету) в веб-часть происходит на более поздней стадии, чем при вызове CreateChildCOntrols веб-части, а именно при обработке событий обратной передачи.

Для справки см. Это изображение: alt text

...