有没有什么办法在选择节点两次时引发SelectedNodeChanged事件。我不能使用代码“treeview.SelectedNode.Selected = false”,因为我必须显示树的选定节点,但同时,我想要一些事件,以便我可以捕获节点上的点击。有没有办法做到这一点?Asp.net树视图 - 当点击同一个节点时没有触发事件
在此先感谢
有没有什么办法在选择节点两次时引发SelectedNodeChanged事件。我不能使用代码“treeview.SelectedNode.Selected = false”,因为我必须显示树的选定节点,但同时,我想要一些事件,以便我可以捕获节点上的点击。有没有办法做到这一点?Asp.net树视图 - 当点击同一个节点时没有触发事件
在此先感谢
你可以做的是将代码放在像预渲染另一个事件,你可以决定是否选择已经由具有布尔类变量发生变化,blnIsChanged例如。在SelectedNodeChanged事件中,此值具有默认值false,仅设置为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
是的,它真的烦人,有一个为标准的TreeView控件没有OnNodeClick()事件。
我结束了使用Telerik的版本('RadTreeView'),它支持这个事件。
另一种方式是写自己的处理程序在一个迂回的方式如下所述: http://www.programmersheaven.com/mb/csharp/341363/341363/event-handling-treeview/
问题是不是这样。当我选择同一个节点两次。第一次,这个事件被解雇了,但是第二次没有开火。 – Ankit 2011-04-14 17:17:40
因为第二次选择没有改变,所以selectednodechanged事件不会触发。我的建议是跟踪所选节点是否改变了自己,以及它是否不在单独的事件中执行您的代码的方法。如果你想让我用我可以的代码示例编辑我的答案。 – 2011-04-14 17:19:21
是的。请输入代码示例 – Ankit 2011-04-15 10:44:53