TreeView - OnSelectedNodeChanged未针对以编程方式添加的节点触发

时间:2011-05-05 16:26:06

标签: asp.net select treeview

我一直在寻找,包括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 );
}

一切都出现在树中,正如我所料,当我点击一个节点时页面会重新加载,但之后什么都没有!我错过了什么?

2 个答案:

答案 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中,但它可能会指向正确的方向。