请问一下 怎么实现当选中树的某一个节点时自动选中其父结点?? 请问一下 怎么实现当选中树的某一个节点时自动选中其父结点??用 js 怎么实现呢?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考以下:加上javascript的处理方法就可以了代码写出来太长了<script language="javascript"><!--var strFuncs = "";//功能节点ID字符串var strSepa = ",";//功能节点ID字符串的分隔符//单击"取消"按钮function btnCancel_Click(){self.close();}//单击"确定"按钮,得到所选择的所有功能选项function btnOK_Click(){var tvwFunc1 = document.getElementById("tvwFunc");var strFunc = "";var allRootNodes = new Array();allRootNodes = tvwFunc1.getChildren();strFunc = getCheckedNodeID(allRootNodes);window.parent.returnValue = strFunc;//向父页面返回功能节点IDself.close();}//遍历所有节点,获取所有选中节点的 ID 号function getCheckedNodeID(NodeArray){if(parseInt(NodeArray.length) == 0){return;}else{for(var i = 0; i < NodeArray.length; i++){var cNode;cNode = NodeArray[i];if(cNode.getAttribute("Checked") == true){strFuncs = strFuncs + cNode.getAttribute("ID") + strSepa;}if(cNode.getChildren().length != 0){//第归调用getCheckedNodeID(cNode.getChildren());}}}var iPos = strFuncs.lastIndexOf(",");if(iPos != 0){return strFuncs.substring(0,iPos);}else{return strFuncs;}}//初始化选中节点function initCheckedNode(){var trids = window.dialogArguments;var arrCheckedId = new Array();var arrUncheckedId = new Array();if(trids != null){arrCheckedId = trids.split(",");var tvwFunc = document.getElementById("tvwFunc");var arrAllRootNode = new Array();arrAllRootNode = tvwFunc.getChildren();try{for(var i = 0; i < arrCheckedId.length; i++){FindOriFuncNode(arrAllRootNode,arrCheckedId[i]);}}catch(e){alert(e);}}}//第归调用遍历所有树形节点function FindOriFuncNode(NodeArray,nodeID){if(parseInt(NodeArray.length) == 0){return;}else{for(var i = 0; i < NodeArray.length; i++){var cNode = NodeArray[i];if(cNode.getAttribute("ID") == nodeID){cNode.setAttribute("Checked","true");break;}if(parseInt(cNode.getChildren().length) != 0){FindOriFuncNode(cNode.getChildren(),nodeID);}}}}//oncheck事件function tree_oncheck(tree){var node = tree.getTreeNode(tree.clickedNodeIndex);var blChecked = node.getAttribute("Checked");//设置子节点选中setCheck(node,blChecked);//设置父节点选中setParentNode(node);document.all.checkedNodes.value = "";document.all.uncheckedNodes.value = "";FindCheckedFromNode(document.getElementById("tvwFunc"));}//设置子节点状态function setCheck(node,blChecked){var childNodes = new Array();childNodes = node.getChildren();if(parseInt(childNodes.length) == 0){return;}else{for(var i = 0; i < childNodes.length; i++){var cNode = childNodes[i];if(parseInt(cNode.getChildren().length) != 0){//递归调用setCheck(cNode,blChecked);}cNode.setAttribute("Checked",blChecked);}}}//设置父节点状态,function setParentNode(node){if(node.getAttribute("Checked")){//如果节点选中,则设置所有父节点选中var parentNode = node.getParent();while(parentNode != null){parentNode.setAttribute("Checked","true");parentNode = parentNode.getParent();}}else{ var blChecked = false;var parentNode = node.getParent();if(parentNode != null){var arrBrotherNode = parentNode.getChildren();for(var i = 0; i < arrBrotherNode.length; i++){var bNode = arrBrotherNode[i];if(bNode.getAttribute("Checked")){blChecked = true;break;}}// 如果所有子节点CheckBox为假,则设置父节点为假if(blChecked == false){parentNode.setAttribute("Checked","false");}}}}//获取所有节点状态function FindCheckedFromNode(tree){var allNodes = new Array();allNodes = tree.getChildren();for(var i = 0; i < allNodes.length; i++){var cNode;cNode = allNodes[i];if(cNode.getAttribute("Checked")){addCheckedNode(cNode);}else{addUncheckedNode(cNode);}if(cNode.getChildren().length != 0){//递归调用FindCheckedFromNode(cNode);}}}//添加选中节点function addCheckedNode(node){document.all.checkedNodes.value += node.getAttribute("NodeData");document.all.checkedNodes.value += ',';}//添加未选中节点function addUncheckedNode(node){document.all.uncheckedNodes.value += node.getAttribute("NodeData");document.all.uncheckedNodes.value += ',';}//--></script> iTextSharp 转化html到pdf 一个页面怎么去修改另一个页面上的内容 C#高手求救,重分奖励100 web.config应如何配置? asp.net中如何向access数据库中插入日期类型数据[插入的数据为变量]? 询问一个DATAGRID的问题 为什么我在javascript里用RegExp判断,有的的正则表达式,不起作用? 我不懂,对你可能很简单,进来看看吧! 求助:报错 如何使用TreeView控件? 请教高手:Asp.net 2.0哪里可以下载? 表单提交的问题
就可以了
代码写出来太长了
<script language="javascript">
<!--
var strFuncs = "";//功能节点ID字符串
var strSepa = ",";//功能节点ID字符串的分隔符//单击"取消"按钮
function btnCancel_Click()
{
self.close();
}//单击"确定"按钮,得到所选择的所有功能选项
function btnOK_Click()
{
var tvwFunc1 = document.getElementById("tvwFunc");var strFunc = "";
var allRootNodes = new Array();
allRootNodes = tvwFunc1.getChildren();strFunc = getCheckedNodeID(allRootNodes);
window.parent.returnValue = strFunc;//向父页面返回功能节点ID
self.close();
}//遍历所有节点,获取所有选中节点的 ID 号
function getCheckedNodeID(NodeArray)
{
if(parseInt(NodeArray.length) == 0)
{
return;
}
else
{
for(var i = 0; i < NodeArray.length; i++)
{
var cNode;
cNode = NodeArray[i];
if(cNode.getAttribute("Checked") == true)
{
strFuncs = strFuncs + cNode.getAttribute("ID") + strSepa;
}if(cNode.getChildren().length != 0)
{
//第归调用
getCheckedNodeID(cNode.getChildren());
}
}
}var iPos = strFuncs.lastIndexOf(",");if(iPos != 0)
{
return strFuncs.substring(0,iPos);
}
else
{
return strFuncs;
}
}//初始化选中节点
function initCheckedNode()
{
var trids = window.dialogArguments;
var arrCheckedId = new Array();
var arrUncheckedId = new Array();
if(trids != null)
{
arrCheckedId = trids.split(",");
var tvwFunc = document.getElementById("tvwFunc");
var arrAllRootNode = new Array();
arrAllRootNode = tvwFunc.getChildren();try
{
for(var i = 0; i < arrCheckedId.length; i++)
{
FindOriFuncNode(arrAllRootNode,arrCheckedId[i]);
}
}
catch(e)
{
alert(e);
}}
}
//第归调用遍历所有树形节点
function FindOriFuncNode(NodeArray,nodeID)
{
if(parseInt(NodeArray.length) == 0)
{
return;
}
else
{
for(var i = 0; i < NodeArray.length; i++)
{
var cNode = NodeArray[i];
if(cNode.getAttribute("ID") == nodeID)
{
cNode.setAttribute("Checked","true");
break;
}if(parseInt(cNode.getChildren().length) != 0)
{
FindOriFuncNode(cNode.getChildren(),nodeID);
}
}
}
}//oncheck事件
function tree_oncheck(tree)
{
var node = tree.getTreeNode(tree.clickedNodeIndex);
var blChecked = node.getAttribute("Checked");//设置子节点选中
setCheck(node,blChecked);//设置父节点选中
setParentNode(node);document.all.checkedNodes.value = "";
document.all.uncheckedNodes.value = "";FindCheckedFromNode(document.getElementById("tvwFunc"));
}//设置子节点状态
function setCheck(node,blChecked)
{
var childNodes = new Array();
childNodes = node.getChildren();if(parseInt(childNodes.length) == 0)
{
return;
}
else
{
for(var i = 0; i < childNodes.length; i++)
{
var cNode = childNodes[i];
if(parseInt(cNode.getChildren().length) != 0)
{
//递归调用
setCheck(cNode,blChecked);
}
cNode.setAttribute("Checked",blChecked);
}
}
}//设置父节点状态,
function setParentNode(node)
{
if(node.getAttribute("Checked"))
{
//如果节点选中,则设置所有父节点选中
var parentNode = node.getParent();
while(parentNode != null)
{
parentNode.setAttribute("Checked","true");
parentNode = parentNode.getParent();
}
}
else
{
var blChecked = false;
var parentNode = node.getParent();
if(parentNode != null)
{
var arrBrotherNode = parentNode.getChildren();
for(var i = 0; i < arrBrotherNode.length; i++)
{
var bNode = arrBrotherNode[i];
if(bNode.getAttribute("Checked"))
{
blChecked = true;
break;
}
}// 如果所有子节点CheckBox为假,则设置父节点为假
if(blChecked == false)
{
parentNode.setAttribute("Checked","false");
}
}
}
}//获取所有节点状态
function FindCheckedFromNode(tree)
{
var allNodes = new Array();
allNodes = tree.getChildren();for(var i = 0; i < allNodes.length; i++)
{
var cNode;
cNode = allNodes[i];
if(cNode.getAttribute("Checked"))
{
addCheckedNode(cNode);
}
else
{
addUncheckedNode(cNode);
}if(cNode.getChildren().length != 0)
{
//递归调用
FindCheckedFromNode(cNode);
}
}
}//添加选中节点
function addCheckedNode(node)
{
document.all.checkedNodes.value += node.getAttribute("NodeData");
document.all.checkedNodes.value += ',';
}
//添加未选中节点
function addUncheckedNode(node)
{
document.all.uncheckedNodes.value += node.getAttribute("NodeData");
document.all.uncheckedNodes.value += ',';
}
//-->
</script>