树视图节点单击事件c# asp.net

bvjveswy  于 2023-01-06  发布在  .NET
关注(0)|答案(1)|浏览(134)

我有一个使用C#asp.net中的TreeView控件的Web应用程序。
我已经为2个事件设置了事件处理程序1)onselectednodechanged 2)ontreenodeexpanded

<asp:Panel ID="PanelTreeView" runat="server" height="510" Width="270" ScrollBars="Auto">
        <asp:TreeView ID="TreeViewTabs" runat="server" Font-Size="Medium" NodeIndent="10" 
           onselectednodechanged="TreeViewTabs_SelectedNodeChanged" 
             ontreenodeexpanded="TreeViewTabs_TreeNodeExpanded">
           <LeafNodeStyle Font-Overline="False" Font-Size="Small" NodeSpacing="0px" 
                VerticalPadding="0px" />
            <NodeStyle NodeSpacing="0px" VerticalPadding="0px" />
           <SelectedNodeStyle ForeColor="Red" />
        </asp:TreeView>                      
     </asp:Panel>

问题是,如果用户点击树中选定的节点,Web应用程序会回发,我不知道应该捕获哪个事件。我知道这肯定不是"onselectednodechanged"事件。我还尝试了事件处理程序"onTreeNodeCheckChanged",它也不会触发该事件。我知道回发将通过Page_Load()处理程序,但我更愿意以捕获TreeView的"onselectednodechanged"的方式捕获此事件。
先谢了。

rdlzhqv9

rdlzhqv91#

这里有一些不错的解决方案在这个链接:
ASP.NET TreeView and Selecting the Selected Node
我喜欢这个解决方案,虽然我还没有尝试过:

TreeNode newCNode;

newCNode = new TreeNode("New Node");

newCNode.SelectAction = TreeNodeSelectAction.Select;

//now you can set the .NavigateUrl property to call the same page with some query string parameter to catch in the page_load()

newCNode.NavigateUrl = "~/ThisPage.aspx?args=" + someNodeAction

RootNode.ChildNodes.Add(newCNode);

相关问题