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

比如我有这样一个TreeView根节点1----父节点1------子节点1|---父节点2------子节点2|-----子节点3现在我点击了子节点3.我需要得到一个字... 比如我有这样一个TreeView
根节点1----父节点1------子节点1
|---父节点2------子节点2
|-----子节点3
现在我点击了子节点3.我需要得到一个字符串为:根节点1父节点2子节点3
如何可以做到.
我点击一个任意一个节点,然后点一个查询按钮,获取到此节点到根节点的所有节点字符串相加的一个字符串啊.
展开
 我来答
山水阿锐
2015-07-10 · TA获得超过34.3万个赞
知道顶级答主
回答量:23.7万
采纳率:91%
帮助的人:3.2亿
展开全部
用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)
//..
}
mop18mop18
2011-07-14
知道答主
回答量:17
采纳率:0%
帮助的人:5.3万
展开全部
当然可以,每一个节点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你好好看看帮助。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
apu510064
2011-07-14 · TA获得超过964个赞
知道小有建树答主
回答量:1634
采纳率:55%
帮助的人:927万
展开全部
用Node.FullPah,可以得到一个字符串,如:根节点/1父节点2/子节点3,你可以对这个字符串替换字符。另外,“/"是自己设定的,通过TreeView的PathSeparator属性设置,你设置为空字符串,得到的FullPath就没有斜杠了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanyan66
2011-07-13
知道答主
回答量:13
采纳率:0%
帮助的人:2.7万
展开全部
先写一个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然后使我点击一个节点然后其父节点也呈选取状态啊.怎样得到字符串啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式