1

我有一个 asp.net 树视图,它使用 OnSelectedNodeChanged 事件并且工作正常,但是如果再次单击同一个节点它不会触发,有什么想法可以解决这个问题吗?

树视图:

<asp:TreeView ID="tvSOWASP" runat="server" ImageSet="Arrows" 
        ShowLines="True" OnTreeNodePopulate="PopulateNode" OnSelectedNodeChanged="SelectNode">
            <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
            <Nodes>
                <asp:TreeNode Expanded="True" ImageUrl="~/tree2/icons/book.gif" 
                    SelectAction="None" Text="Schemes Of Work" Value="Schemes Of Work">
                </asp:TreeNode>
            </Nodes>
            <NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" 
                HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="0px" />
            <ParentNodeStyle Font-Bold="False" />
            <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" 
                HorizontalPadding="0px" VerticalPadding="0px" />    
        </asp:TreeView>

代码隐藏:

protected void SelectNode(Object sender, EventArgs e)
{
    // Code here, ok when select any node, select same node and this code is not hit
}
4

5 回答 5

5

嘿,请试试这个。

protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e){
// Do whatever you're doing
TreeView1.SelectedNode.Selected = false;
}

希望对你有帮助

于 2013-05-09T10:09:29.727 回答
0

根据我的说法,任何控件的 OnSelectedNodeChanged 事件都将是该控件的 ID,其事件名称与您的控件名称一样,tvSOWASP因此它的事件不会tvSOWASP_SelectedNodeChanged用我的代码SelectNode更改您的事件,例如SelectedNodeChanged

protected void tvSOWASP_SelectedNodeChanged(object sender, EventArgs e)
{
// Your code...
}

所以OnSelectedNodeChanged="SelectNode"从你的代码中删除你的,它也是点击事件,并尝试按照我提到的那样创建一个新事件。

希望它理解并为您工作。

于 2013-05-09T10:12:10.347 回答
0

当您再次单击同一节点时,它不会触发,因为第二次选择没有改变,因此 selectednodechanged 事件不会触发。

请参考这个链接

于 2013-05-09T12:18:10.627 回答
0

我发现在 SelectedNodeChanged 事件结束时取消选择当前节点会导致页面周期稍后出现问题。当控件本身呈现时,它没有显示选定的节点。

相反,我在 Page_Load 事件中添加了一些代码来清除当前选择。

protected void Page_Load(object sender, EventArgs e)
{
    if(IsPostBack) {
        string eventTarget = Page.Request["__EVENTTARGET"];
        if(eventTarget == TreeView1.ClientID.Replace('_', '$')) {
            // The TreeView is posting back a selection change
            // Clear out any existing selection so that selecting the same node
            // will trigger the change event.

            TreeView1.SelectedNode.Selected = false;
        }
    }
}
于 2020-11-27T01:16:24.697 回答
-1

使用 e.Node.Collapse(); 在 treeView_TreeNodeExpanded

于 2016-06-06T16:02:21.950 回答