Как визуализировать ASP.NET TreeView программно? - PullRequest
2 голосов
/ 11 августа 2010

Я пытаюсь динамически создать базовый элемент управления ASP.NET TreeView. Но когда я вызываю RenderControl (), чтобы получить его вывод, ASP.NET выдает исключение нулевой ссылки. Что делает ASP.NET за кулисами, когда я объявляю TreeView в .ascx / aspx, которого здесь нет?

Поврежденная:

    protected override void DoRender(HtmlTextWriter output)
    {
        TreeView treeview = new TreeView();
        treeview.SkipLinkText = String.Empty;  //omit this for exception on get_SpacerImageUrl
        treeview.ImageSet = TreeViewImageSet.BulletedList;

        TreeNode node = new TreeNode("Node 1");
        node.ImageUrl = string.Empty;
        node.ChildNodes.Add(new TreeNode("Subnode 1"));
        node.ChildNodes.Add(new TreeNode("Subnode 2"));
        treeview.Nodes.Add(node);

        node = new TreeNode("Node 2");
        node.ChildNodes.Add(new TreeNode("Subnode 1"));
        node.ChildNodes.Add(new TreeNode("Subnode 2"));
        node.ChildNodes.Add(new TreeNode("Subnode 3"));
        treeview.Nodes.Add(node);

        treeview.RenderControl(output);
    }

Работает нормально:

            <asp:TreeView ID="tvMenu" runat="server">
            <Nodes>
                <asp:TreeNode Text="Node 1">
                    <asp:TreeNode Text="Section 1"></asp:TreeNode>
                    <asp:TreeNode Text="Section 2"></asp:TreeNode>
                    <asp:TreeNode Text="Section 3"></asp:TreeNode>
                </asp:TreeNode>
                <asp:TreeNode Text="Node 2">
                    <asp:TreeNode Text="Section One"></asp:TreeNode>
                    <asp:TreeNode Text="Section Two"></asp:TreeNode>
                    <asp:TreeNode Text="Section Three"></asp:TreeNode>
                </asp:TreeNode>
            </Nodes>
        </asp:TreeView>

Исключение: [NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.] System.Web.UI.WebControls.TreeView.GetImageUrl (индекс Int32) +3089 System.Web.UI.WebControls.TreeNode.Render (модуль записи HtmlTextWriter, позиция Int32, логическое значение [] isLast, логическое значение включено) + 2329

1 Ответ

0 голосов
/ 19 апреля 2016

Вы можете создать динамический элемент управления TreeView в CodeBehind следующим образом:

 using (var db = new FORMS())
                {
                    //Get Chapters from selected form
                    var query = from b in db.CHAPTERS
                                select b;

                    //Create treeview hierarchy
                    foreach (var rootItem in query)
                    {
                        TreeNode myNode = new TreeNode(rootItem.titulo, rootItem.id.ToString());

                        var childQuery = from b in db.SECTIONS
                                         select b;
                        //Add childs
                        foreach (var childItem in childQuery)
                        {
                            TreeNode myChildNode = new TreeNode(childItem.titulo, childItem.id.ToString());
                            myNode.ChildNodes.Add(myChildNode);
                        }

                        ChapterTreeView.Nodes.Add(myNode);
                    }
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...