如何得到点击节点的所有父节点 我的树是通过C#后台代码生成的,容器是TreeView。现在点击树的某一节点要得到该树的所有父节点。请问如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 [MyNode].onclick = function(e){ var t = e.target || e.srcElement, list = []; while(t = t.parentNode) list.push(t);} 没有用啊 function client_OnTreeNode(event) {//得到当前所 Click 的对象,并做相应的处理 var objNode; if (!public_IsObjectNull(event.srcElement)) {//IE objNode= event.srcElement; } else { //FF objNode= event.target; } if (!public_IsNode(objNode)) return; var type = event.srcElement.tagName; if (type == 'A') { window.dialogArguments.getElementById('Text1').value = event.srcElement.innerText; [这里要写TreeView还是type ].onclick = function(e){ var t = e.target || e.srcElement, list = []; while(t = t.parentNode) list.push(t); } window.close();} }//判断对象是否为空 function public_IsObjectNull(element) { if (element==null|| element=="undefined") return true; else return false; }//判断对象是否为 节点 function public_IsNode(element) { if (public_IsObjectNull(element)) return false; if (element.tagName == "A" && element.children.length == 0) return true; else return false; }我这样写可以么? 结合我贴出的JS代码。onclick事件已经注册有了。2楼的代码不知道写在哪好 用jquery吧,简单,$(elem).parents();elem是点击的结点,以上简单一行就将所有父节点获取出来了。 function client_OnTreeNode(event) { var parents = event.srcElement ? $(event.srcElement).parents() : $(event.target).parents(); // 对 parents 的操作} 回楼上的朋友,我用alert弹出parents,不管我上面有几个节点。都是显示[object object]这样的信息 function client_OnTreeNode(event) {//得到当前所 Click 的对象,并做相应的处理 var objNode; if (!public_IsObjectNull(event.srcElement)) {//IE objNode= event.srcElement; } else { //FF objNode= event.target; } if (!public_IsNode(objNode)) return; var type = event.srcElement.tagName; if (type == 'A') { window.dialogArguments.getElementById('Text1').value = event.srcElement.innerText; var list = []; while(objNode = objNode.parentNode) list.push(objNode); window.close();} }//判断对象是否为空 function public_IsObjectNull(element) { if (element==null|| element=="undefined") return true; else return false; }//判断对象是否为 节点 function public_IsNode(element) { if (public_IsObjectNull(element)) return false; if (element.tagName == "A" && element.children.length == 0) return true; else return false; } 回shan1119这位朋友,如何得到节点的值,我这样得到的都是object对象,而且我点击父节点也会显示该父节点有上层节点。 是的,因为它是一个jquery对象,你可以 parents.each(function(elem){ alert(elem);}); 回shan1119朋友,我点击最上面的父节点,得到12个object 噢,这是索引值,你可以直接用this来访问当前遍历的元素parents.each(function(){ alert(this);}); 一直得到的都是object类型。我想得到节点上的显示值 view your TreeView and get the attribute what you want to get from the parentnode 谁有空帮我看看啊,就2个aspx页面,很小 //这个是树页面public partial class input : System.Web.UI.Page{ string strString = ""; private static string connString = "server=.;uid=sa;pwd=sa2005;database=information"; private static SqlConnection conn = new SqlConnection(connString); DataTable table = new DataTable(); TreeNode node = new TreeNode(); //private static string tablename = null; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.TreeView1.Nodes.Clear(); SqlDataAdapter sda = new SqlDataAdapter("select * from E10_BBS_List", conn); sda.Fill(table); AddNode(node, table); TreeView1.Nodes.Add(node); TreeView1.Attributes.Add("onclick", "client_OnTreeNode(event)"); } } //生成树结构 private void AddNode(TreeNode objTreeNode, DataTable table) { TreeNode node = new TreeNode(); int lNode = 0; int lColumn = 0; int lDeep = 0; while (table.Rows.Count > lNode) { DataRow dw = table.Rows[lNode]; bool isNewLine = true; lColumn = 0; while (dw.ItemArray.Length > lColumn) { if (lNode == 0) { //node.SelectAction = no; node.Expanded = false; node = new TreeNode(table.Rows[lNode][lColumn].ToString(), table.Columns[lColumn].ColumnName.ToString()); objTreeNode.ChildNodes.Add(node); lDeep = lColumn; objTreeNode = node; isNewLine = true; } else if (table.Rows[lNode - 1][lColumn].ToString() != dw.ItemArray[lColumn].ToString() | isNewLine == true) { node.Expanded = false; int lNodeforDeep = 0; for (lNodeforDeep = lColumn; lNodeforDeep <= lDeep; lNodeforDeep++) { objTreeNode = objTreeNode.Parent; } node = new TreeNode(table.Rows[lNode][lColumn].ToString(), table.Columns[lColumn].ColumnName.ToString()); objTreeNode.ChildNodes.Add(node); lDeep = lColumn; objTreeNode = node; isNewLine = true; } lColumn += 1; } isNewLine = false; lNode += 1; } }}//这个是主页面,该页面上有个TXT文本框,点击文本框弹出树页面,点击树的某一节点,把该节点的所有父节点传到主页面的TXT文本框上,JS代码在上面已经给出。多谢各位帮助!<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"><base target="_self" /> <title>无标题页</title> <script language="javascript" type="text/javascript">// function show()// {// window.showModalDialog("input.aspx");// //window.open('input.aspx', 'newwindow', 'height=500, width=500, top=100, left=400, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no') // } </script></head><body> <form id="form1" runat="server"> <div> <input id="Text1" type="text" runat="server" onclick="showModalDialog('input.aspx', window.document)" readonly="readOnly" /></div> </form></body></html> //input页面的HTML代码,主页面无HTML代码<%@ Page Language="C#" AutoEventWireup="true" CodeFile="input.aspx.cs" Inherits="input" %><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><base target="_self" /> <title>信息</title><%-- <script type="text/javascript" src="input.js"></script>--%> <script language="javascript" src="jquery-1.3.2.js" type="text/javascript"></script> <script language="javascript" type="text/javascript"> function client_OnTreeNode(event) { // var parents = event.srcElement ? $(event.srcElement).parents() : $(event.target).parents(); // parents.each(function(elem){ // alert(this);//}); //得到当前所 Click 的对象,并做相应的处理 var objNode; if (!public_IsObjectNull(event.srcElement)) {//IE objNode= event.srcElement; } else { //FF objNode= event.target; } if (!public_IsNode(objNode)) return; var type = event.srcElement.tagName; if (type == 'A') { var parents = event.srcElement ? $(event.srcElement).parents() : $(event.target).parents(); alert(parents); window.dialogArguments.getElementById('Text1').value = event.srcElement.innerText; var list = []; while(objNode = objNode.parentNode) list.push(objNode.value); alert(list); window.close(); }} //判断对象是否为空 function public_IsObjectNull(element) { if (element==null|| element=="undefined") return true; else return false; }//判断对象是否为 节点 function public_IsNode(element) { if (public_IsObjectNull(element)) return false; if (element.tagName == "A" && element.children.length == 0) return true; else return false; }</script> </head><body > <form id="form1" runat="server"> <div> <br /> <asp:TreeView ID="TreeView1" runat="server"> </asp:TreeView> </div> </form></body></html> 真晕啊 这么久还没搞定要JS操作 那你就别用控件 用了控件你就应该用控件的server端 ONCLICK操作事件 在配合。NET的AJAX框架 来实现页面操作不然你不是自己搞自己脑子 用TreeView控件点击事件 循环 不就可以了?for (int i = 0; i < TreeView.Nodes.Count; i++){ if (TreeView.Nodes[i].ChildNodes.Count > 0) { }} 哥们,我也不想这样啊,项目需求就是这样搞起的回LS的朋友,TREEVIEW自带的事件在这里都会无效 要搞清楚,服务器端控件treeview到达客户端后,被解析成什么样子了。才能去获取他的上级。在服务器端去遍历要方便 我正在看。被解析成一个Div里面包含Table.节点信息都在Table里面 <div id="TreeView1n0Nodes" style="display:block;"> <table cellpadding="0" cellspacing="0" style="border-width:0;"> <tr> <td><div style="width:20px;height:1px"></div></td><td><a id="TreeView1n1" href="javascript:TreeView_ToggleNode(TreeView1_Data,1,TreeView1n1,' ',TreeView1n1Nodes)"><img src="/TreeUI/WebResource.axd?d=ZhYmBDlJHDZAP26bhDMyhqDTwDJXcWwRz618DglkQdM1&t=633986617041406250" alt="展开 6" style="border-width:0;" /></a></td><td style="white-space:nowrap;"><a class="TreeView1_0" href="javascript:__doPostBack('TreeView1','s\\id')" onclick="TreeView_SelectNode(TreeView1_Data, this,'TreeView1t1');" id="TreeView1t1">6</a></td> </tr> </table>控件解析到客户端呈现的样式,请问如何得到id=TreeView1n0Nodes里面的6 dojo datetimepicker能选择小时吗? 正则表达式的疑问 3个小问题,问高人 当选中窗体内容时激发什么事件 请教js高手实现cookie购物车的问题 rowspan的值能否为变量? document.write的一点困惑 一个小问题 如何把整形变量转为字符串变量 关于瀑布流布局JS代码无法实现效果 请教下,DHTML中js如何控制定位注释语句<!-- QQ在线咨询不能上下浮动的问题-与页面代码有冲突?
var t = e.target || e.srcElement, list = [];
while(t = t.parentNode)
list.push(t);
}
function client_OnTreeNode(event)
{//得到当前所 Click 的对象,并做相应的处理
var objNode;
if (!public_IsObjectNull(event.srcElement))
{//IE
objNode= event.srcElement;
}
else
{
//FF
objNode= event.target;
}
if (!public_IsNode(objNode))
return; var type = event.srcElement.tagName;
if (type == 'A') {
window.dialogArguments.getElementById('Text1').value = event.srcElement.innerText; [这里要写TreeView还是type ].onclick = function(e){ var t = e.target || e.srcElement, list = []; while(t = t.parentNode) list.push(t); } window.close();
}
}
//判断对象是否为空
function public_IsObjectNull(element)
{
if (element==null|| element=="undefined")
return true;
else
return false;
}
//判断对象是否为 节点
function public_IsNode(element)
{
if (public_IsObjectNull(element))
return false; if (element.tagName == "A" && element.children.length == 0)
return true;
else
return false;
}
我这样写可以么?
var parents = event.srcElement ? $(event.srcElement).parents() : $(event.target).parents();
// 对 parents 的操作
}
{//得到当前所 Click 的对象,并做相应的处理
var objNode;
if (!public_IsObjectNull(event.srcElement))
{//IE
objNode= event.srcElement;
}
else
{
//FF
objNode= event.target;
}
if (!public_IsNode(objNode))
return; var type = event.srcElement.tagName;
if (type == 'A') {
window.dialogArguments.getElementById('Text1').value = event.srcElement.innerText; var list = [];
while(objNode = objNode.parentNode)
list.push(objNode); window.close();
}
}
//判断对象是否为空
function public_IsObjectNull(element)
{
if (element==null|| element=="undefined")
return true;
else
return false;
}
//判断对象是否为 节点
function public_IsNode(element)
{
if (public_IsObjectNull(element))
return false; if (element.tagName == "A" && element.children.length == 0)
return true;
else
return false;
}
是的,因为它是一个jquery对象,你可以
parents.each(function(elem){
alert(elem);
});
噢,这是索引值,你可以直接用this来访问当前遍历的元素parents.each(function(){
alert(this);
});
//这个是树页面
public partial class input : System.Web.UI.Page
{
string strString = "";
private static string connString = "server=.;uid=sa;pwd=sa2005;database=information";
private static SqlConnection conn = new SqlConnection(connString);
DataTable table = new DataTable();
TreeNode node = new TreeNode();
//private static string tablename = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.TreeView1.Nodes.Clear();
SqlDataAdapter sda = new SqlDataAdapter("select * from E10_BBS_List", conn);
sda.Fill(table);
AddNode(node, table);
TreeView1.Nodes.Add(node);
TreeView1.Attributes.Add("onclick", "client_OnTreeNode(event)");
}
} //生成树结构
private void AddNode(TreeNode objTreeNode, DataTable table)
{
TreeNode node = new TreeNode();
int lNode = 0;
int lColumn = 0;
int lDeep = 0;
while (table.Rows.Count > lNode)
{
DataRow dw = table.Rows[lNode];
bool isNewLine = true; lColumn = 0; while (dw.ItemArray.Length > lColumn)
{
if (lNode == 0)
{
//node.SelectAction = no;
node.Expanded = false; node = new TreeNode(table.Rows[lNode][lColumn].ToString(), table.Columns[lColumn].ColumnName.ToString());
objTreeNode.ChildNodes.Add(node);
lDeep = lColumn;
objTreeNode = node;
isNewLine = true;
}
else if (table.Rows[lNode - 1][lColumn].ToString() != dw.ItemArray[lColumn].ToString() | isNewLine == true)
{
node.Expanded = false; int lNodeforDeep = 0;
for (lNodeforDeep = lColumn; lNodeforDeep <= lDeep; lNodeforDeep++)
{
objTreeNode = objTreeNode.Parent;
} node = new TreeNode(table.Rows[lNode][lColumn].ToString(), table.Columns[lColumn].ColumnName.ToString());
objTreeNode.ChildNodes.Add(node);
lDeep = lColumn;
objTreeNode = node; isNewLine = true;
} lColumn += 1; } isNewLine = false;
lNode += 1;
}
}
}//这个是主页面,该页面上有个TXT文本框,点击文本框弹出树页面,点击树的某一节点,把该节点的所有父节点传到主页面的TXT文本框上,JS代码在上面已经给出。多谢各位帮助!
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<base target="_self" />
<title>无标题页</title>
<script language="javascript" type="text/javascript">
// function show()
// {
// window.showModalDialog("input.aspx");
// //window.open('input.aspx', 'newwindow', 'height=500, width=500, top=100, left=400, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')
// }
</script></head>
<body>
<form id="form1" runat="server">
<div>
<input id="Text1" type="text" runat="server" onclick="showModalDialog('input.aspx', window.document)" readonly="readOnly" /></div>
</form>
</body>
</html>
//input页面的HTML代码,主页面无HTML代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="input.aspx.cs" Inherits="input" %><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<base target="_self" />
<title>信息</title>
<%-- <script type="text/javascript" src="input.js"></script>--%>
<script language="javascript" src="jquery-1.3.2.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function client_OnTreeNode(event)
{
// var parents = event.srcElement ? $(event.srcElement).parents() : $(event.target).parents();
// parents.each(function(elem){
// alert(this);
//});
//得到当前所 Click 的对象,并做相应的处理
var objNode;
if (!public_IsObjectNull(event.srcElement))
{//IE
objNode= event.srcElement;
}
else
{
//FF
objNode= event.target;
}
if (!public_IsNode(objNode))
return;
var type = event.srcElement.tagName;
if (type == 'A')
{
var parents = event.srcElement ? $(event.srcElement).parents() : $(event.target).parents();
alert(parents);
window.dialogArguments.getElementById('Text1').value = event.srcElement.innerText;
var list = [];
while(objNode = objNode.parentNode) list.push(objNode.value);
alert(list);
window.close();
}
} //判断对象是否为空
function public_IsObjectNull(element)
{
if (element==null|| element=="undefined")
return true;
else
return false;
}
//判断对象是否为 节点
function public_IsNode(element)
{
if (public_IsObjectNull(element))
return false; if (element.tagName == "A" && element.children.length == 0)
return true;
else
return false;
}</script>
</head>
<body > <form id="form1" runat="server">
<div>
<br />
<asp:TreeView ID="TreeView1" runat="server">
</asp:TreeView>
</div>
</form>
</body>
</html>
要JS操作 那你就别用控件
用了控件你就应该用控件的server端 ONCLICK操作事件 在配合。NET的AJAX框架 来实现页面操作
不然你不是自己搞自己脑子
点击事件 循环 不就可以了?for (int i = 0; i < TreeView.Nodes.Count; i++)
{
if (TreeView.Nodes[i].ChildNodes.Count > 0)
{
}
}
回LS的朋友,TREEVIEW自带的事件在这里都会无效
在服务器端去遍历要方便
<div id="TreeView1n0Nodes" style="display:block;">
<table cellpadding="0" cellspacing="0" style="border-width:0;">
<tr>
<td><div style="width:20px;height:1px"></div></td><td><a id="TreeView1n1" href="javascript:TreeView_ToggleNode(TreeView1_Data,1,TreeView1n1,' ',TreeView1n1Nodes)"><img src="/TreeUI/WebResource.axd?d=ZhYmBDlJHDZAP26bhDMyhqDTwDJXcWwRz618DglkQdM1&t=633986617041406250" alt="展开 6" style="border-width:0;" /></a></td><td style="white-space:nowrap;"><a class="TreeView1_0" href="javascript:__doPostBack('TreeView1','s\\id')" onclick="TreeView_SelectNode(TreeView1_Data, this,'TreeView1t1');" id="TreeView1t1">6</a></td>
</tr>
</table>
控件解析到客户端呈现的样式,请问如何得到id=TreeView1n0Nodes里面的6