function postBackObject() { var o = window.event.srcElement; if (o.tagName == "INPUT" && o.type == "checkbox") {//点击treeview的checkbox是否触发 var d = o.id; //获得当前checkbox的id var e = d.replace("CheckBox", "Nodes"); //通过查看脚本信息,获得包含所有子节点的div的id var div = window.document.getElementById(e); //获得div对象 if (div != null) {//如果不为空,表示存在子节点 var check = div.getElementsByTagName("INPUT"); //获得div中所有的已input开始的标记 for (i = 0; i < check.length; i++) { if (check[i].type == "checkbox") { check[i].checked = o.checked; //子节点和父节点的状态一致,即全选 } } } else {//点击子节点的时候,是父节点的状态改变,即不为全选 var divid = o.parentElement.parentElement.parentElement.parentElement.parentElement; //子节点所在的div var id = divid.id.replace("Nodes", "CheckBox"); //获得根节点的id var checkbox = divid.getElementsByTagName("INPUT"); //获得所有子节点数 var s = 0; for (i = 0; i < checkbox.length; i++) { if (checkbox[i].checked) { s++; } } if (s == checkbox.length) {//如果全部选中或选择的是另外一个根节点的子节点, window.document.getElementById(id).checked = true; //则开始的根节点仍为选中状态 } else { window.document.getElementById(id).checked = false; } } } } 额,没有半选中的
{
var ele = event.srcElement;
if(ele.type=='checkbox')
{
var childrenDivID = ele.id.replace('CheckBox','Nodes');
var div = document.getElementById(childrenDivID);
if(div==null)
return;
var checkBoxs = div.getElementsByTagName('INPUT');
for(var i=0;i<checkBoxs.length;i++)
{
if(checkBoxs[i].type=='checkbox')
checkBoxs[i].checked=ele.checked;
} if(ele.parentNode.parentNode.parentNode.parentNode.parentNode.id=='<%=TreeUser.ClientID%>')
{
if(current==null)
{
current=ele;
}
else
{
current.checked=false;
childrenDivID = current.id.replace('CheckBox','Nodes');
div = document.getElementById(childrenDivID);
if(div!=null)
{
checkBoxs = div.getElementsByTagName('INPUT');
for(var i=0;i<checkBoxs.length;i++)
{
if(checkBoxs[i].type=='checkbox')
checkBoxs[i].checked=false;
}
}
if(current==ele)
{
current=null;
}
else
{
current=ele;
}
}
}
}
}
可以在几点前面加图片 没选中 图片 选中 图片 半选中 图片
根据不同的情况换图片
不选中 unchecked
不确定 interminate(类似这个名字)--你要求的半选中。
//改变所有子节点的状态
public static void CheckAllChildNodes(TreeNode pn, bool IsChecked)
{
foreach (TreeNode tn in pn.Nodes)
{
tn.Checked = IsChecked;
if (tn.Nodes.Count > 0)
{
CheckAllChildNodes(tn, IsChecked);
}
}
} //改变父节点的选中状态
public static void CheckParentNode(TreeNode curNode, bool IsChecked)
{
bool bChecked = true; if (curNode.Parent != null)
{
foreach (TreeNode node in curNode.Parent.Nodes)
{
if (node.Checked == false)
{
bChecked = false;
break;
}
} if (bChecked)
{
curNode.Parent.Checked = true;
CheckParentNode(curNode.Parent, true);
}
else
{
curNode.Parent.Checked = false;
CheckParentNode(curNode.Parent, false);
}
}
}
var o = window.event.srcElement;
if (o.tagName == "INPUT" && o.type == "checkbox") {//点击treeview的checkbox是否触发
var d = o.id; //获得当前checkbox的id
var e = d.replace("CheckBox", "Nodes"); //通过查看脚本信息,获得包含所有子节点的div的id
var div = window.document.getElementById(e); //获得div对象
if (div != null) {//如果不为空,表示存在子节点
var check = div.getElementsByTagName("INPUT"); //获得div中所有的已input开始的标记
for (i = 0; i < check.length; i++) {
if (check[i].type == "checkbox") {
check[i].checked = o.checked; //子节点和父节点的状态一致,即全选
}
}
} else {//点击子节点的时候,是父节点的状态改变,即不为全选
var divid = o.parentElement.parentElement.parentElement.parentElement.parentElement; //子节点所在的div
var id = divid.id.replace("Nodes", "CheckBox"); //获得根节点的id
var checkbox = divid.getElementsByTagName("INPUT"); //获得所有子节点数
var s = 0;
for (i = 0; i < checkbox.length; i++) {
if (checkbox[i].checked) {
s++;
}
}
if (s == checkbox.length) {//如果全部选中或选择的是另外一个根节点的子节点,
window.document.getElementById(id).checked = true; //则开始的根节点仍为选中状态
} else {
window.document.getElementById(id).checked = false;
}
}
}
}
额,没有半选中的