Asp.net树视图 - 单击同一节点时未触发事件

时间:2011-04-14 17:01:16

标签: asp.net treeview event-handling selectedvalue

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

提前致谢

2 个答案:

答案 0 :(得分:1)

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

示例:

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

答案 1 :(得分:0)

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

我最终使用Telerik的版本('RadTreeView')支持此活动。

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