前提是每层的结点上设置了NavigateUrl
OnSelectedNodeChanged事件好像失去了作用。
另外TreeView是没有AutoPostBack的!!!!
那么要如何触发OnSelectedNodeChanged事件呢?
其实我想实现的功能很简单就是要点击节点时,该节点新式有所变化。
NavigateUrl把这个去掉试试呢?如果可以,就NavigateUrl
交给后台事件OnSelectedNodeChanged里面赋值
去掉可以触发。
不去掉,我换用JS来实现,但是它没有动态去更新,得到的仍是第一次默认的节点ID。
如何才能动态得到所选的节点呢?
我的代码是:
function goUrl(src)
{
var a=" <%=test() %>";
alert(a);
}
tn.NavigateUrl = "javascript:goUrl('CList.aspx?PID=" + _dataTable.Rows[0]["PID"].ToString() + "');";
protected string test()
{
this.SelectedID = new Guid(stv1.SelectedNode.Value);
return this.SelectedID.ToString();
}
其实目的就是为了实现点节点时,能高亮显示以示选中,
解决了。用JQUERY实现的。
方法:
jQuery( function()
{
var treeObj = jQuery("#<%=stv1.ClientID %>");
//alert(treeObj.selector);
//alert(treeObj.length);
var anchorObjList = treeObj.find("a");
//alert(anchorObjList.length);
anchorObjList.click( function()
{
//alert('test');
anchorObjList.filter(".selectStyle").removeClass("selectStyle");
anchorObjList.filter(".ctl00_ContentPlaceHolder1_stv1_0.ctl00_ContentPlaceHolder1_stv1_1.ctl00_ContentPlaceHolder1_stv1_5").removeClass("ctl00_ContentPlaceHolder1_stv1_0 ctl00_ContentPlaceHolder1_stv1_1 ctl00_ContentPlaceHolder1_stv1_5");
jQuery(this).addClass("selectStyle");//这里的this就是指向点击的元素,点哪个就是哪个。
});
});
<style type="text/css">
.selectStyle {font-weight:bold; text-decoration:underline;Color:#5555DD;padding:0;}
</style>