html:要注意 这里的 ShowCheckBoxes="ALL" 为所有的节点添加CheckBox
<
asp:TreeView
ID
="TreeView1"
runat
="server"
Height
="178px"
Width ="96px" ShowLines ="True" ShowCheckBoxes ="All" >
</ asp:TreeView >
Width ="96px" ShowLines ="True" ShowCheckBoxes ="All" >
</ asp:TreeView >
引用 javascript
<
script
type
="text/jscript"
language
="javascript"
>
...
//这个函数为刷新页面实现功能
function foo()
...{
var o = window.event.srcElement;
if (o.tagName == "INPUT" && o.type == "checkbox")
...{
__doPostBack("","");
}
}
//下面这个为不刷新页面实现
function ShowLegend(ControlID,LegendInfo)
...{
alert(LegendInfo);
var para = "LegendInfo="+LegendInfo + "&Visible=" + document.all(ControlID).checked;
var myAjax = new Ajax.Request('../ajax/WebFormChangeLegendVisible.aspx',...{method: 'get', parameters:para, onComplete: RefreshMap});
}
function RefreshMap(request)
...{
var content = request.responseText;
parent.mapview.document.forms[0].submit();
}
function OnTreeNodeChecked()
...{
var element = window.event.srcElement;
if (!IsCheckBox(element))
return;
var isChecked = element.checked;
var tree = TV2_GetTreeById("TreeView1");
var node = TV2_GetNode(tree,element);
TV2_SetChildNodesCheckStatus(node,isChecked);
//alert(element.id);
var parent = TV2_GetParentNode(tree,node);
TV2_NodeOnChildNodeCheckedChanged(tree,parent,isChecked);
document.all("txtSelectID").value = ""
var aCheckBox = document.getElementsByTagName("input");
for (var i=0;i<aCheckBox.length;i++)
...{
if(aCheckBox[i].type == "checkbox")
...{
if(aCheckBox[i].checked)
...{
var sID = aCheckBox[i].id;
sID = sID.substring(0,sID.indexOf("CheckBox"));
var obja = document.getElementById(sID.replace('n','t'));
var sSelectID = obja.href.replace("javascript:__doPostBack('TreeView1','s","")
sSelectID = sSelectID.replace("')","")
//sSelectID = sSelectID.replace("//","-")
var aSelectID = sSelectID.split("/")
document.all("txtSelectID").value = aSelectID[aSelectID.length-1]+";"+document.all("txtSelectID").value;
//document.all("txtSelectID").value = sSelectID+";"+document.all("txtSelectID").value;
}
}
}
var sAllSelectID = document.all("txtSelectID").value;
if(sAllSelectID!="")
sAllSelectID = sAllSelectID.substring(0,sAllSelectID.length-1);
//alert(sAllSelectID);
// var para = "LegendInfo="+sAllSelectID;
// var myAjax = new Ajax.Request('../ajax/WebFormChangeLegendVisible.aspx',{method: 'get', parameters:para, onComplete: RefreshMap});
}
//set child nodes checkbox status
function TV2_SetChildNodesCheckStatus(node,isChecked)
...{
var childNodes = TV2i_GetChildNodesDiv(node);
if(childNodes == null)
return;
var inputs = WebForm_GetElementsByTagName(childNodes,"INPUT");
if(inputs == null || inputs.length == 0)
return;
for(var i = 0; i < inputs.length; i++)
...{
if(IsCheckBox(inputs[i]))
inputs[i].checked = isChecked;
}
}
//change parent node checkbox status after child node changed
function TV2_NodeOnChildNodeCheckedChanged(tree,node,isChecked)
...{
if(node == null)
return;
var childNodes = TV2_GetChildNodes(tree,node);
if(childNodes == null || childNodes.length == 0)
return;
var isAllSame = true;
for(var i = 0; i < childNodes.length; i++)
...{
var item = childNodes[i];
var value = TV2_NodeGetChecked(item);
if(isChecked != value)
...{
isAllSame = false;
break;
}
}
var parent = TV2_GetParentNode(tree,node);
if(isAllSame)
...{
TV2_NodeSetChecked(tree,node,isChecked);
TV2_NodeOnChildNodeCheckedChanged(tree,parent,isChecked);
}
else
...{
TV2_NodeSetChecked(tree,node,false);
TV2_NodeOnChildNodeCheckedChanged(tree,parent,false);
}
}
//get node relative element(etc. checkbox)
function TV2_GetNode(tree,element)
...{
var id = element.id.replace(tree.id,"");
id = id.toLowerCase().replace(element.type,"");
id = tree.id + id;
var node = document.getElementById(id);
if(node == null) //leaf node, no "A" node
return element;
return node;
}
//get parent node
function TV2_GetParentNode(tree,node)
...{
var div = WebForm_GetParentByTagName(node,"DIV");
//The structure of node: <table>information of node</table><div>child nodes</div>
var table = div.previousSibling;
if(table == null)
return null;
return TV2i_GetNodeInElement(tree,table);
}
//get child nodes array
function TV2_GetChildNodes(tree,node)
...{
if(TV2_NodeIsLeaf(node))
return null;
var children = new Array();
var div = TV2i_GetChildNodesDiv(node);
var index = 0;
for(var i = 0; i < div.childNodes.length; i++)
...{
var element = div.childNodes[i];
if(element.tagName != "TABLE")
continue;
var child = TV2i_GetNodeInElement(tree,element);
if(child != null)
children[index++] = child;
}
return children;
}
function TV2_NodeIsLeaf(node)
...{
return !(node.tagName == "A"); //Todo
}
function TV2_NodeGetChecked(node)
...{
var checkbox = TV2i_NodeGetCheckBox(node);
return checkbox.checked;
}
//判断:只要该节点有一个字节点被选中,则该节点一定被选中
function TV2_NodeSetChecked(tree,node,isChecked)
...{
var checkbox = TV2i_NodeGetCheckBox(node);
if(checkbox != null)
...{
var childNodes = TV2_GetChildNodes(tree,node);
for(var i = 0; i < childNodes.length; i++)
...{
var item = childNodes[i];
var value = TV2_NodeGetChecked(item);
if(value)
...{
isChecked = true ;
break;
}
}
checkbox.checked = isChecked;
}
}
function IsCheckBox(element)
...{
if(element == null)
return false;
return (element.tagName == "INPUT" && element.type.toLowerCase() == "checkbox");
}
//get tree
function TV2_GetTreeById(id)
...{
return document.getElementById(id);
}
//
//private mothods, with TV2i_ prefix
//
//get div contains child nodes
function TV2i_GetChildNodesDiv(node)
...{
if(TV2_NodeIsLeaf(node))
return null;
var childNodsDivId = node.id + "Nodes";
return document.getElementById( childNodsDivId );
}
//find node in element
function TV2i_GetNodeInElement(tree,element)
...{
var node = TV2i_GetNodeInElementA(tree,element);
if(node == null)
...{
node = TV2i_GetNodeInElementInput(tree,element);
}
return node;
}
//find "A" node
function TV2i_GetNodeInElementA(tree,element)
...{
var as = WebForm_GetElementsByTagName(element,"A");
if(as== null || as.length == 0)
return null;
var regexp = new RegExp("^" + tree.id + "n/d+$");
for(var i = 0; i < as.length; i++)
...{
if(as[i].id.match(regexp))
...{
return as[i];
}
}
return null;
}
//find "INPUT" node
function TV2i_GetNodeInElementInput(tree,element)
...{
var as = WebForm_GetElementsByTagName(element,"INPUT");
if(as== null || as.length == 0)
return null;
var regexp = new RegExp("^" + tree.id + "n/d+");
for(var i = 0; i < as.length; i++)
...{
if(as[i].id.match(regexp))
...{
return as[i];
}
}
return null;
}
//get checkbox of node
function TV2i_NodeGetCheckBox(node)
...{
if(IsCheckBox(node))
return node;
var id = node.id + "CheckBox";
return document.getElementById(id);
}
function showtab(m,n,count)...{
var strPic1='url(../image/1.bmp)';
var strPic2='url(../image/2.bmp)';
if (m==8) ...{
strPic1='url(../image/switch03_1.gif)';
strPic2='url(../image/switch03_2.gif)'; }
for(var i=1;i<=count;i++)...{
if (i==n)...{
getObject(m+'_'+i).style.background=strPic1;
getObject('tab_'+m+'_'+i).style.display='';
}
else ...{
getObject(m+'_'+i).style.background=strPic2;
getObject('tab_'+m+'_'+i).style.display='none';
}
}
}
function getObject(objectId) ...{
if(document.getElementById && document.getElementById(objectId)) ...{
// W3C DOM
return document.getElementById(objectId);
} else if (document.all && document.all(objectId)) ...{
// MSIE 4 DOM
return document.all(objectId);
} else if (document.layers && document.layers[objectId]) ...{
// NN 4 DOM.. note: this won't find nested layers
return document.layers[objectId];
} else ...{
return false;
}
} // getObject
function Init()
...{
//var w = document.body.scrollWidth;
var w = document.body.clientWidth;
//var h = document.body.scrollHeight;
var h = document.body.clientHeight;
getObject("tabTree").style.height = h-90;
getObject("divHRTree").style.height=h-100;
}
</ script >
//这个函数为刷新页面实现功能
function foo()
...{
var o = window.event.srcElement;
if (o.tagName == "INPUT" && o.type == "checkbox")
...{
__doPostBack("","");
}
}
//下面这个为不刷新页面实现
function ShowLegend(ControlID,LegendInfo)
...{
alert(LegendInfo);
var para = "LegendInfo="+LegendInfo + "&Visible=" + document.all(ControlID).checked;
var myAjax = new Ajax.Request('../ajax/WebFormChangeLegendVisible.aspx',...{method: 'get', parameters:para, onComplete: RefreshMap});
}
function RefreshMap(request)
...{
var content = request.responseText;
parent.mapview.document.forms[0].submit();
}
function OnTreeNodeChecked()
...{
var element = window.event.srcElement;
if (!IsCheckBox(element))
return;
var isChecked = element.checked;
var tree = TV2_GetTreeById("TreeView1");
var node = TV2_GetNode(tree,element);
TV2_SetChildNodesCheckStatus(node,isChecked);
//alert(element.id);
var parent = TV2_GetParentNode(tree,node);
TV2_NodeOnChildNodeCheckedChanged(tree,parent,isChecked);
document.all("txtSelectID").value = ""
var aCheckBox = document.getElementsByTagName("input");
for (var i=0;i<aCheckBox.length;i++)
...{
if(aCheckBox[i].type == "checkbox")
...{
if(aCheckBox[i].checked)
...{
var sID = aCheckBox[i].id;
sID = sID.substring(0,sID.indexOf("CheckBox"));
var obja = document.getElementById(sID.replace('n','t'));
var sSelectID = obja.href.replace("javascript:__doPostBack('TreeView1','s","")
sSelectID = sSelectID.replace("')","")
//sSelectID = sSelectID.replace("//","-")
var aSelectID = sSelectID.split("/")
document.all("txtSelectID").value = aSelectID[aSelectID.length-1]+";"+document.all("txtSelectID").value;
//document.all("txtSelectID").value = sSelectID+";"+document.all("txtSelectID").value;
}
}
}
var sAllSelectID = document.all("txtSelectID").value;
if(sAllSelectID!="")
sAllSelectID = sAllSelectID.substring(0,sAllSelectID.length-1);
//alert(sAllSelectID);
// var para = "LegendInfo="+sAllSelectID;
// var myAjax = new Ajax.Request('../ajax/WebFormChangeLegendVisible.aspx',{method: 'get', parameters:para, onComplete: RefreshMap});
}
//set child nodes checkbox status
function TV2_SetChildNodesCheckStatus(node,isChecked)
...{
var childNodes = TV2i_GetChildNodesDiv(node);
if(childNodes == null)
return;
var inputs = WebForm_GetElementsByTagName(childNodes,"INPUT");
if(inputs == null || inputs.length == 0)
return;
for(var i = 0; i < inputs.length; i++)
...{
if(IsCheckBox(inputs[i]))
inputs[i].checked = isChecked;
}
}
//change parent node checkbox status after child node changed
function TV2_NodeOnChildNodeCheckedChanged(tree,node,isChecked)
...{
if(node == null)
return;
var childNodes = TV2_GetChildNodes(tree,node);
if(childNodes == null || childNodes.length == 0)
return;
var isAllSame = true;
for(var i = 0; i < childNodes.length; i++)
...{
var item = childNodes[i];
var value = TV2_NodeGetChecked(item);
if(isChecked != value)
...{
isAllSame = false;
break;
}
}
var parent = TV2_GetParentNode(tree,node);
if(isAllSame)
...{
TV2_NodeSetChecked(tree,node,isChecked);
TV2_NodeOnChildNodeCheckedChanged(tree,parent,isChecked);
}
else
...{
TV2_NodeSetChecked(tree,node,false);
TV2_NodeOnChildNodeCheckedChanged(tree,parent,false);
}
}
//get node relative element(etc. checkbox)
function TV2_GetNode(tree,element)
...{
var id = element.id.replace(tree.id,"");
id = id.toLowerCase().replace(element.type,"");
id = tree.id + id;
var node = document.getElementById(id);
if(node == null) //leaf node, no "A" node
return element;
return node;
}
//get parent node
function TV2_GetParentNode(tree,node)
...{
var div = WebForm_GetParentByTagName(node,"DIV");
//The structure of node: <table>information of node</table><div>child nodes</div>
var table = div.previousSibling;
if(table == null)
return null;
return TV2i_GetNodeInElement(tree,table);
}
//get child nodes array
function TV2_GetChildNodes(tree,node)
...{
if(TV2_NodeIsLeaf(node))
return null;
var children = new Array();
var div = TV2i_GetChildNodesDiv(node);
var index = 0;
for(var i = 0; i < div.childNodes.length; i++)
...{
var element = div.childNodes[i];
if(element.tagName != "TABLE")
continue;
var child = TV2i_GetNodeInElement(tree,element);
if(child != null)
children[index++] = child;
}
return children;
}
function TV2_NodeIsLeaf(node)
...{
return !(node.tagName == "A"); //Todo
}
function TV2_NodeGetChecked(node)
...{
var checkbox = TV2i_NodeGetCheckBox(node);
return checkbox.checked;
}
//判断:只要该节点有一个字节点被选中,则该节点一定被选中
function TV2_NodeSetChecked(tree,node,isChecked)
...{
var checkbox = TV2i_NodeGetCheckBox(node);
if(checkbox != null)
...{
var childNodes = TV2_GetChildNodes(tree,node);
for(var i = 0; i < childNodes.length; i++)
...{
var item = childNodes[i];
var value = TV2_NodeGetChecked(item);
if(value)
...{
isChecked = true ;
break;
}
}
checkbox.checked = isChecked;
}
}
function IsCheckBox(element)
...{
if(element == null)
return false;
return (element.tagName == "INPUT" && element.type.toLowerCase() == "checkbox");
}
//get tree
function TV2_GetTreeById(id)
...{
return document.getElementById(id);
}
//
//private mothods, with TV2i_ prefix
//
//get div contains child nodes
function TV2i_GetChildNodesDiv(node)
...{
if(TV2_NodeIsLeaf(node))
return null;
var childNodsDivId = node.id + "Nodes";
return document.getElementById( childNodsDivId );
}
//find node in element
function TV2i_GetNodeInElement(tree,element)
...{
var node = TV2i_GetNodeInElementA(tree,element);
if(node == null)
...{
node = TV2i_GetNodeInElementInput(tree,element);
}
return node;
}
//find "A" node
function TV2i_GetNodeInElementA(tree,element)
...{
var as = WebForm_GetElementsByTagName(element,"A");
if(as== null || as.length == 0)
return null;
var regexp = new RegExp("^" + tree.id + "n/d+$");
for(var i = 0; i < as.length; i++)
...{
if(as[i].id.match(regexp))
...{
return as[i];
}
}
return null;
}
//find "INPUT" node
function TV2i_GetNodeInElementInput(tree,element)
...{
var as = WebForm_GetElementsByTagName(element,"INPUT");
if(as== null || as.length == 0)
return null;
var regexp = new RegExp("^" + tree.id + "n/d+");
for(var i = 0; i < as.length; i++)
...{
if(as[i].id.match(regexp))
...{
return as[i];
}
}
return null;
}
//get checkbox of node
function TV2i_NodeGetCheckBox(node)
...{
if(IsCheckBox(node))
return node;
var id = node.id + "CheckBox";
return document.getElementById(id);
}
function showtab(m,n,count)...{
var strPic1='url(../image/1.bmp)';
var strPic2='url(../image/2.bmp)';
if (m==8) ...{
strPic1='url(../image/switch03_1.gif)';
strPic2='url(../image/switch03_2.gif)'; }
for(var i=1;i<=count;i++)...{
if (i==n)...{
getObject(m+'_'+i).style.background=strPic1;
getObject('tab_'+m+'_'+i).style.display='';
}
else ...{
getObject(m+'_'+i).style.background=strPic2;
getObject('tab_'+m+'_'+i).style.display='none';
}
}
}
function getObject(objectId) ...{
if(document.getElementById && document.getElementById(objectId)) ...{
// W3C DOM
return document.getElementById(objectId);
} else if (document.all && document.all(objectId)) ...{
// MSIE 4 DOM
return document.all(objectId);
} else if (document.layers && document.layers[objectId]) ...{
// NN 4 DOM.. note: this won't find nested layers
return document.layers[objectId];
} else ...{
return false;
}
} // getObject
function Init()
...{
//var w = document.body.scrollWidth;
var w = document.body.clientWidth;
//var h = document.body.scrollHeight;
var h = document.body.clientHeight;
getObject("tabTree").style.height = h-90;
getObject("divHRTree").style.height=h-100;
}
</ script >
cs代码:
protected
void
Page_Load(
object
sender, EventArgs e)
... {
if (!Page.IsPostBack)
...{
TreeView1.Attributes.Add("onclick", "OnTreeNodeChecked()");
}
}
protected void TreeView1_TreeNodeCheckChanged( object sender, TreeNodeEventArgs e)
... {
SetChildChecked ( e.Node );
}
private void SetChildChecked ( TreeNode p_Node )
... {
foreach ( TreeNode _n in p_Node.ChildNodes )
...{
_n.Checked = p_Node.Checked;
if ( _n.ChildNodes.Count > 0 )
...{
SetChildChecked( _n );
}
}
}
... {
if (!Page.IsPostBack)
...{
TreeView1.Attributes.Add("onclick", "OnTreeNodeChecked()");
}
}
protected void TreeView1_TreeNodeCheckChanged( object sender, TreeNodeEventArgs e)
... {
SetChildChecked ( e.Node );
}
private void SetChildChecked ( TreeNode p_Node )
... {
foreach ( TreeNode _n in p_Node.ChildNodes )
...{
_n.Checked = p_Node.Checked;
if ( _n.ChildNodes.Count > 0 )
...{
SetChildChecked( _n );
}
}
}