Я пытаюсь динамически создать базовый элемент управления ASP.NET TreeView. Но когда я вызываю RenderControl(), чтобы получить его вывод, ASP.NET генерирует исключения для нулевой ссылки. Что делает ASP.NET за кулисами, когда я объявляю TreeView в .ascx/aspx, который НЕ происходит здесь?Как визуализировать ASP.NET TreeView программно?
Разорванные:
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 writer, позиция Int32, Boolean [] isLast, Boolean enabled) +2329
В каком контексте вы пытаетесь сделать этот контроль? – womp
В элементе управления на основе System.Web.UI.WebControls.WebControl. HtmlTextWriter определенно действителен. Оказание более простых элементов управления (например, TextBox) отлично работает. – Bryan
Я не могу найти ни одного примера TreeView, объявленного в коде, где-нибудь ... очень неприятно. – Bryan