我一直在寻找,包括similar questions here无济于事。如果我点击我添加到TreeView
的节点,则OnSelectedNodeChanged
事件不会触发。即使忽略这一点,只需Page_Load()
,SelectedNode
属性为空。
我的TreeView控件是:
<asp:TreeView runat="server" ID="TheView" OnTreeNodePopulate="Populate" OnSelectedNodeChanged="SelectNode" />
在我的代码中,我添加了一个节点:
TreeNode node = new TreeNode( "Root", "1" );
node.PopulateOnDemand = true;
node.SelectAction = TreeNodeSelectAction.Select;
TheView.Nodes.Add( node );
从属节点的添加方式相同:
foreach ( MyMenuItem item in list )
{
TreeNode newNode = new TreeNode( item.DisplayName, item.Value );
newNode.PopulateOnDemand = true;
newNode.SelectAction = TreeNodeSelectAction.Select;
node.ChildNodes.Add( newNode );
}
一切都出现在树中,正如我所料,当我点击一个节点时页面会重新加载,但之后什么都没有!我错过了什么?
答案 0 :(得分:0)
我不知道这是什么,遗留代码和所有,但this post at forums.asp.net向我展示了方式。我的CSSMenuAdapter.browser文件中有一个CSSFriendlyAdapter。删除它使其工作......并使树视图看起来更好。
答案 1 :(得分:0)
我有一个程序化树视图,我加载的方式类似于你加载你的方式。 SelectedNodeChanged事件在我的上面触发,但是因为选择一个节点重新加载页面,因此树,我必须告诉树每次加载时选择哪个节点。我是通过使用
来做到这一点的If Request.PhysicalPath = Server.MapPath(myNode.NavigateUrl) Then
myNode.Selected = True
End If
加载节点时。这是一个黑客攻击,它在VB中,但它可能会指向正确的方向。