TreeView如何实现全选
来源:互联网 发布:淘宝指导开店是真是假 编辑:程序博客网 时间:2024/05/14 06:54
下面有两种办法,是我从CSDN里找到的,拿来共享下
法一:
用JS我实现了的,没什么问题。记得在Page_load时间写
this.TreeView1.Attributes.Add("onclick", "CheckEvent()");
JScript code
//获取元素指定tagName的父元素
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);
}
}
法二:
//全选TreeViewfunction 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; } } } } }}
<asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" ShowLines="True" onclick='client_OnTreeNodeChecked()' >
</asp:TreeView>
两种方法我都试了,完全可以做到!
- TreeView如何实现全选
- TreeView如何实现全选
- jQuery 让 TreeView 实现全选
- 让 TreeView 实现向上全选 功能
- JS实现对TreeView的全选
- javascript 实现 TreeView全选(实现子节点全选,中父节点自动全选)
- 实现Treeview 的Checkbox选中根枝叶全选中
- TreeView控件实现选中父节点时全选子节点
- TreeView控件实现选中父节点时全选子节点
- TreeView控件实现选中父节点时全选子节点
- 如何实现全选checkbox效果
- JavaScript如何实现全选,全不选
- TreeView 全选的代码
- Asp.net 中利用JQuery实现Treeview的全选和取消全选
- Treeview 全选,取消选择,联动
- 如何实现checkbox的全选/取消
- GridView中如何实现CheckBox的全选?
- JQeury如何实现全选和全不选
- 放入conn.asp中(拒绝攻击 万能Asp防注入代码)
- fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC sha
- 坑爹的"前端智勇大冲关"
- 不能将参数 1 从“char [128]”转换为“LPCTSTR”vs2012 宽字符 转换为多字节的设置
- C++模板使用介绍
- TreeView如何实现全选
- 【基础C&C++】内存函数
- 错误提示:unresolved external symbol __endthreadex
- 触发器基础概念
- 头文件包含冲突问题
- 如何理解LPCTSTR类型?
- Microsoft Visual Studio 2010 与VC++6.0的差异出现问题
- 如何让员工心甘情愿地加班
- 静态拆分窗口问题