【问题标题】:Asp.net tree view - Event not fired when Click on the same nodeAsp.net 树视图 - 单击同一节点时未触发事件
【发布时间】:2011-04-14 17:01:16
【问题描述】:

有没有办法在选择节点两次时引发 SelectedNodeChanged 事件。我不能使用代码“treeview.SelectedNode.Selected = false”,因为我必须显示树的选定节点,但同时,我想要一些事件,以便我可以捕获节点上的点击。有什么办法吗?

提前致谢

【问题讨论】:

    标签: asp.net treeview event-handling selectedvalue


    【解决方案1】:

    您可以将代码放在另一个事件中,例如预渲染,您可以通过布尔类变量(例如 blnIsChanged)来确定选择是否已更改。此值的默认值 false 仅在 SelectedNodeChanged 事件中设置为 true,因此您可以在预渲染(或在 SelectedNodeChanged 事件之后触发的任何事件)中有一个 if 语句,如果 blnIsChanged = false 并执行您的代码如果它 = true,则什么都没有。

    例子:

    Partial Class YourPageWithaAtreeView  
        Inherits System.Web.UI.Page  
    Dim _blnSelectionChanged as Boolean = false
    
    
    
    Protected Sub MyTree_SelectedNodeChanged(byval sender as object, byval e as eventargs) handles MyTree.SelectedNodeChanged  
       _blnSelectionChanged = true //The selection changed
    End Sub
    Protected Sub MyTree_PreRender(byval sender as object, byval e as eventargs) handles MyTree.PreRender
        if _blnSelectionChanged = false Then
          //Because the boolean is not true that means that 
          //the selected node didn't change
          //insert the code you want to execute when the user
          //clicks the already selected node
        end if
    End Sub
    

    【讨论】:

    • 问题不在于。当我两次选择同一个节点时。第一次,事件被触发,但第二次没有触发。
    • 正确,因为第二次选择没有改变,所以 selectednodechanged 事件不会触发。我的建议是跟踪所选节点是否更改了您自己以及它是否没有在单独的事件中执行您的代码的方法。如果您希望我使用代码示例编辑我的答案,我可以。
    【解决方案2】:

    是的,标准 TreeView 控件没有 OnNodeClick() 事件真的很烦人。

    我最终使用了支持此事件的Telerik 的版本(“RadTreeView”)。

    另一种方法是按照此处描述的迂回方式编写您自己的处理程序: http://www.programmersheaven.com/mb/csharp/341363/341363/event-handling-treeview/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2011-12-02
      • 1970-01-01
      相关资源
      最近更新 更多