TreeView控件实现选中父节点时全选子节点
来源:互联网 发布:淘宝卖aj高仿的店 编辑:程序博客网 时间:2024/04/30 09:35
第一种方法
<head runat="server">
<title>无标题页</title>
<script type="text/javascript">
function public_GetParentByTagName(element, tagName)
{
var parent = element.parentNode;
var upperTagName = tagName.toUpperCase();
//如果这个元素还不是想要的tag就继续上溯
while (parent && (parent.tagName.toUpperCase() != upperTagName))
{
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
}
return parent;
}
//设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问
function setParentChecked(objNode)
{
var objParentDiv = public_GetParentByTagName(objNode,"div");
if(objParentDiv==null || objParentDiv == "undefined")
{
return;
}
var objID = objParentDiv.getAttribute("ID");
objID = objID.substring(0,objID.indexOf("Nodes"));
objID = objID+"CheckBox";
var objParentCheckBox = document.getElementById(objID);
if(objParentCheckBox==null || objParentCheckBox == "undefined")
{
return;
}
if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox")
return;
objParentCheckBox.checked = true;
setParentChecked(objParentCheckBox);
}
//设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问
function setChildUnChecked(divID)
{
var objchild = divID.children;
var count = objchild.length;
for(var i=0;i <objchild.length;i++)
{
var tempObj = objchild[i];
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
{
tempObj.checked = false;
}
setChildUnChecked(tempObj);
}
}
//设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问
function setChildChecked(divID)
{
var objchild = divID.children;
var count = objchild.length;
for(var i=0;i <objchild.length;i++)
{
var tempObj = objchild[i];
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
{
tempObj.checked = true;
}
setChildChecked(tempObj);
}
}
//触发事件
function CheckEvent()
{
var objNode = event.srcElement;
if(objNode.tagName!="INPUT" || objNode.type!="checkbox")
return;
if(objNode.checked==true)
{
setParentChecked(objNode);
var objID = objNode.getAttribute("ID");
var objID = objID.substring(0,objID.indexOf("CheckBox"));
var objParentDiv = document.getElementById(objID+"Nodes");
if(objParentDiv==null || objParentDiv == "undefined")
{
return;
}
setChildChecked(objParentDiv);
}
else
{
var objID = objNode.getAttribute("ID");
var objID = objID.substring(0,objID.indexOf("CheckBox"));
var objParentDiv = document.getElementById(objID+"Nodes");
if(objParentDiv==null || objParentDiv == "undefined")
{
return;
}
setChildUnChecked(objParentDiv);
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" onclick="CheckEvent()">
<Nodes>
<asp:TreeNode Text="A" Value="A">
<asp:TreeNode Text="AA" Value="AA"></asp:TreeNode>
<asp:TreeNode Text="AAA" Value="AAA"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="B" Value="B">
<asp:TreeNode Text="BB" Value="BB"></asp:TreeNode>
<asp:TreeNode Text="BBB" Value="BBB"></asp:TreeNode>
</asp:TreeNode>
</Nodes>
</asp:TreeView>
</div>
</form>
</body>
-----------------------------------------------------
第二种方法:
<script type="text/javascript">
function client_OnTreeNodeChecked()
{
var obj = window.event.srcElement;
var treeNodeFound = false;
var checkedState;
if (obj.tagName == "INPUT" && obj.type == "checkbox")
{
var treeNode = obj;
checkedState = treeNode.checked;
do
{
obj = obj.parentElement;
} while (obj.tagName != "TABLE")
var parentTreeLevel = obj.rows[0].cells.length;
var parentTreeNode = obj.rows[0].cells[0];
var tables = obj.parentElement.getElementsByTagName("TABLE");
var numTables = tables.length
if (numTables >= 1)
{
for (i=0; i < numTables; i++)
{
if (tables[i] == obj)
{
treeNodeFound = true;
i++;
if (i == numTables)
{
return;
}
}
if (treeNodeFound == true)
{
var childTreeLevel = tables[i].rows[0].cells.length;
if (childTreeLevel > parentTreeLevel)
{
var cell = tables[i].rows[0].cells[childTreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
inputs[0].checked = checkedState;
}
else
{
return;
}
}
}
}
}
}
</script>
<asp:TreeView ID="TreeView1" runat="server" onclick="client_OnTreeNodeChecked()"
ShowCheckBoxes="All">
<Nodes>
<asp:TreeNode Text="A" Value="A">
<asp:TreeNode Text="AA" Value="AA"></asp:TreeNode>
<asp:TreeNode Text="AAA" Value="AAA"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="B" Value="B">
<asp:TreeNode Text="BB" Value="BB"></asp:TreeNode>
<asp:TreeNode Text="BBB" Value="BBB"></asp:TreeNode>
</asp:TreeNode>
</Nodes>
</asp:TreeView>
- TreeView控件实现选中父节点时全选子节点
- TreeView控件实现选中父节点时全选子节点
- TreeView控件实现选中父节点时全选子节点
- C# TreeView 控件选中父节点后子节点自动全选的代码 [转贴] [测试有效]
- TreeView控件的父节点的全选与不选级联子节点并实现拖动子节点
- 实现当TreeView中父节点的CheckBox的点选状态改变时,回发服务器端,并且选中父节点,所有子节点全选中
- C#-----TreeView根节点选中后,子节点全选中
- javascript 实现 TreeView全选(实现子节点全选,中父节点自动全选)
- C#winfrom 中 TreeView 控件中带checkbox,怎么实现在父节点上打勾,选中全部子节点?
- javascrip实现:若选中TreeView的父节点checkbox,则其子节点全部选中
- C# TreeView级联父子节点(选中子节点父节点也选中,反之选中父节点子节点也选中)
- bootstrap-treeview 实现全选父节点下所有子节点及反选
- 递归获取treeview选中父节点的所有子节点
- TreeView选择父节点自动选中子节点
- TreeView的子节点和父节点级联选中
- TreeView的子节点和父节点级联选中
- 【项目】——TreeView父节点子节点同步选中
- TreeView的子节点和父节点级联选中
- CString常用方法
- Qt编程的禁忌和限制 – moc应该这样用
- asp.net开发必备的51种代码
- Mysql乱码终极解决方案
- C#+SQL2005实现货物管理系统--系统说明、使用帮、源码下载
- TreeView控件实现选中父节点时全选子节点
- asp.net页面刷新问题
- 非常好用的zend framework 分页类
- 弹出页面传值的问题,一点建议
- 系统权限
- 流媒体传输协议
- junit4简单使用
- 事务书写---SqlTransaction类 多条sql语句同事进行
- Oracle实例概念解析