如何获取TreeView点击的值加上其父节点直到根节点的值.

比如我有这样一个TreeView
根节点1----父节点1------子节点1
|---父节点2------子节点2
|-----子节点3
现在我点击了子节点3.我需要得到一个字符串为:根节点1父节点2子节点3
如何可以做到.
我点击一个任意一个节点,然后点一个查询按钮,获取到此节点到根节点的所有节点字符串相加的一个字符串啊.

用Node.FullPah,可以得到一个字符串,如:根节点/1父节点2/子节点3,你可以对这个字符串替换字符。另外,“/"是自己设定的,通过TreeView的PathSeparator属性设置,你设置为空字符串,得到的FullPath就没有斜杠了。

TreeView tv ;
public X(){
tv = new TreeView();
tv.Click += new EventHandler(tv_Click);
}

void tv_Click(object sender , EventArgs e) {
if(tv.SelectedNode!=null)
//..
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-14
当然可以,每一个节点treenode都有一个属性Parent,它表示为上层节点,根节点由于没有父节点,所以Parent为none
那么:任何一个Treenode--selectNode(暂且记为)那么所有的串联:
string str="";
TreeNode parentNode = selectNode.Parent;
while(parentNode!=null)
{
str=parentNode.Text+str;
parentNode = parentNode.Parent;
}
//最后的str就是你要的,注意当循环次数不定时,可用while循环。

这个问题:还有另外的解法:TreeNode.Level你好好看看帮助。本回答被网友采纳
第2个回答  2011-07-14
用Node.FullPah,可以得到一个字符串,如:根节点/1父节点2/子节点3,你可以对这个字符串替换字符。另外,“/"是自己设定的,通过TreeView的PathSeparator属性设置,你设置为空字符串,得到的FullPath就没有斜杠了本回答被提问者采纳
第3个回答  2011-07-13
先写一个JS展开的。
<script language="javascript">
//checkbox点击事件
function OnCheckEvent(){
var objNode = event.srcElement;
if(objNode.tagName != "INPUT" || objNode.type != "checkbox")
return;

//获得当前树结点
var ck_ID = objNode.getAttribute("ID");
var node_ID = ck_ID.substring(0,ck_ID.indexOf("CheckBox")) + "Nodes";
var curTreeNode = document.getElementById(node_ID);

//级联选择
SetChildCheckBox(curTreeNode,objNode.checked);
SetParentCheckBox(objNode);
};

//子结点字符串
var childIds = "";
//获取子结点ID数组
function GetChildIdArray(parentNode){
if (parentNode == null)
return;

var childNodes = parentNode.children;
var count = childNodes.length;
for(var i = 0;i < count;i ++){
var tmpNode = childNodes[i];
if(tmpNode.tagName == "INPUT" && tmpNode.type == "checkbox"){
childIds = tmpNode.id + ":" + childIds;
}
GetChildIdArray(tmpNode);
}
};

//设置子结点的checkbox
function SetChildCheckBox(parentNode,checked){
if(parentNode == null)
return;

var childNodes = parentNode.children;
var count = childNodes.length;
for(var i = 0;i < count;i ++){
var tmpNode = childNodes[i];
if(tmpNode.tagName == "INPUT" && tmpNode.type == "checkbox"){
tmpNode.checked = checked;
}
SetChildCheckBox(tmpNode,checked);
}
};

//设置父结点的checkbox
function SetParentCheckBox(childNode){
if(childNode == null)
return;

if (childNode.tagName != 'INPUT' || childNode.type != 'checkbox')
return;

var parent = childNode.parentNode;
if(parent == null || parent == "undefined")
return;
do {
parent = parent.parentNode;
} while (parent && parent.tagName != "DIV");

if(parent == "undefined" || parent == null)
return;

var parentId = parent.getAttribute("ID");
var objParent = document.getElementById(parentId);
childIds = "";
GetChildIdArray(objParent);

//判断子结点状态
childIds = childIds.substring(0,childIds.length - 1);
var aryChild = childIds.split(":");
var result = false;

//当子结点的checkbox状态有一个为true,其父结点checkbox状态即为true,否则为false
for(var i in aryChild){
var childCk = document.getElementById(aryChild[i]);
if(childCk.checked)
result = true;
}
parentId = parentId.replace("Nodes","CheckBox");
var parentCk = document.getElementById(parentId);
if(parentCk == null)
return;
if(result)
parentCk.checked = true;
else
parentCk.checked = false;
SetParentCheckBox(parentCk);
};
</script>
代码:
连接数据库,绑定数据源追问

这个只是绑定的CheckBox然后使我点击一个节点然后其父节点也呈选取状态啊.怎样得到字符串啊?

如何根据treeview中的某个节点获取treeview的根节点
用Node.FullPah,可以得到一个字符串,如:根节点\/1父节点2\/子节点3,你可以对这个字符串替换字符。另外,“\/"是自己设定的,通过TreeView的PathSeparator属性设置,你设置为空字符串,得到的FullPath就没有斜杠了。TreeView tv ;public X(){ tv = new TreeView();tv.Click += new EventHandler...

怎样获取TreeView中选中节点中根节点的值,我选中的是子节点不是根节点...
获取当前节点的父节点,按层数逐渐获取当前节点的父节点,直到为根节点。

DELPHI TreeView,动态添加父节点,子节点
AddChild添加一个子节点,要求有父节点作为其参数。返回新添加的节点。Add添加一个兄弟节点,要求有兄弟节点作为其参数。返回新添加的节点。三、针对TTreeNodes,也就是 TreeView.Items,常用的得到节点的操作有:GetFirstNode() 得到根节点。然后配合TTreeNode.GetNext(),就可以访问所有的节点。四、建树...

C#treeView单击事件选中节点
1、在界面上添加【treeView】的控件,并调整为合适大小。2、在程序界面上加入其它需要的控件:包括,用于输入父节点个数和子节点个数的2个输入框;生成节点的按钮、删除节点的按钮、清除所有节点的按钮;输出日志信息的文本框。3、编辑代码,输入【生成节点】的代码;获取子节点和父节点的个数,使用循环...

...view中的数据,按数据父子关系添加到TreeView控件中?
用数据集操作更加直接。具体来说,添加节点时指定节点KEY=ID(如果是数字ID前面加一个任意字母),并且把节点附加到父节点上(按上述规则添加很容易找到父节点),没有父节点则作为根节点。应该能够看出添加时是按层级添加的,即先添加父节点后子节点,数据集可以先按层级排序。

wpf中选中treeview的某个子节点后获取子节点所在的所有父节点的内容用...
csdn上的例子 (仅供参考): private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs e){ TreeViewItem item = (TreeViewItem)treeView1.SelectedItem;TreeViewItem it = new TreeViewItem();if (!item.HasItems){ if (item.Parent != null && (item.Parent is...

如何在c# treeview控件动态绑定数据库,实现2级目录,添加父节点并在父...
从你的数据表中读出父子节点表到DataTable中,然后按上下级关系一个个添加就可以。添加父子节点只需另写一个功能很数据表中加就行,比较简单。给你一个示例,大概是这样子。private void ShowTree(){ this.SystemTree.Nodes.Clear();TreeNode rootNode = new TreeNode();rootNode.Text = "XXXXXXXX...

TreeView如何遍历?
TreeView的数据存储格式一般如下:(节点编号,节点名称,节点值,上级节点编号)遍历TreeView一般用递归算法 public void LoadTree(TreeNode tn){ if(tn == null) \/\/加载根节点 { \/\/从数据库获取上级节点编号=0的DataSet foreach(DataRow dr in ds.Tables[0].Rows){ TreeNode newNode=new Tree...

c#treeview设置NavigateUrl跳转并同时取父节点值? 我只能实现其中一种...
设置节点的NavigateUrl=“javascript:getNodeVal(this);”,在javascript的方法getNodeVal中设置页面跳转,并且能够获得节点的值,如果想获得父节点的值也行,将父节点的值通过该javascript方法传到getNodeVal中,怎用都行 ,你说了算!

c# treeView 只载入第一层,点击节点时载入下一层,该怎么解决
在后添加控件的NodeMouseClick事件,在事件中写上加载子节点的代码,如果有多和父节点的话:private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e){if (e.Node.Text == 父节点){e.Node.Nodes.Add(1);

相似回答