技术来自google
首先在.cs文件里给treeview控件添加属性
PageTV.Attributes.Add("oncheck", "tree_oncheck()");
然后在相应的页面上在<html和<head之间加入以下javascript代码
<script language="javascript">
<!--
function tree_oncheck()
{
var node = PageTV.getTreeNode(event.treeNodeIndex);
var Pchecked = node.getAttribute("checked");
setcheck(node, Pchecked);
PageTV.queueEvent('oncheck', node.getNodeIndex());
}
function setcheck(node, Pc)
{
var ChildNode = new Array();
ChildNode = node.getChildren();
if (parseInt(ChildNode.length) != 0)
{
for (var i = 0; i < ChildNode.length; i++)
{
var cNode = ChildNode[i];
if (cNode.getAttribute("checked") != Pc)
{
if (parseInt(cNode.getChildren().length) != 0)
setcheck(cNode, Pc);
cNode.setAttribute("checked", Pc);
PageTV.queueEvent('oncheck', cNode.getNodeIndex());
}
}
}
}
//-->
</script>
整个功能的实现需要修改微软treeview控件的一个Bug
需要修改inetpub\wwwroot\webctrl_client\1_0\treeview.htc。
把function doCheckboxClick(el)中的第一行,
el.checked = !el.checked;
改成:
el.checked = !el.getAttribute("checked");