MSDN:http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.treeview.selectednodechanged(VS.80).aspx
只有节点(Node)的SelectAction被设定为Select时才能够触发该事件,而TreeView的DataSource如果为siteMap则默认该属性值为None,并且如果节点(Node)的Target属性被设定为一个url则会忽略OnSelectedNodeChanged,而直接跳转到该url
因此使用siteMap作为TreeView的数据源时,添加OnTreeNodeDataBound事件的回调方法,将上诉2个属性进行变更
1 protected void TreeNodeDataBound(object sender, TreeNodeEventArgs e)
2 {
3 if (!String.IsNullOrEmpty(e.Node.NavigateUrl))
4 {
5 /* 如果Node的url不为空则表示该Node表征的是页面,清除该Node指向的target,重设SelectAction
6 以保证点击该节点时能够触发SelectedNodeChanged */
7 e.Node.Target = String.Empty;
8 e.Node.SelectAction = TreeNodeSelectAction.Select;
9 }
10