
正文
由TreeView 如何触发OnSelectedNodeChanged事件想到的与做到的
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
前提是每层的结点上设置了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[]["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>






