惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
IT之家
IT之家
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
阮一峰的网络日志
阮一峰的网络日志
Stack Overflow Blog
Stack Overflow Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
GbyAI
GbyAI
V
V2EX
N
Netflix TechBlog - Medium
Vercel News
Vercel News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
The Blog of Author Tim Ferriss
量子位
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
月光博客
月光博客
F
Fortinet All Blogs

博客园 - 老狐狸

关于Update语句在不同数据库中的差别 出错存储过程 F_GETTABLELID 正则表达式求值 - 老狐狸 - 博客园 创建层次查询 ultrawebgrid - 老狐狸 - 博客园 javascript - 老狐狸 - 博客园 case when用法和and 后加条件 exp/imp导出导入工具的使用 ASP.NET1.1中Grid自定义眉头 asp.net2.0 TreeView 创建记录、数组 关闭远程数据库连接 创建游标 创建新的序列 创建隐式游标 创建临时表 更新表(多表相关联)
asp.net1.0 TreeView
老狐狸 · 2006-06-27 · via 博客园 - 老狐狸

var OnInit;
var OnNodeChecked;


<!-- 这是注释 -->
function initchecknode(TreeView1)
{
    
//获得需要初始化选择状态的节点的字符串.
    var selectedNodes = document.getElementById("corpList").value;
    
var arrayNodes = new Array();
    arrayNodes 
= selectedNodes.split(",");
    
var AllRootNode=new Array();
    AllRootNode
=document.getElementById(TreeView1).getChildren();
    
    
//初始化选择的节点
    
    findAndCheckedNodes(AllRootNode, arrayNodes, 
1);
}


function findAndCheckedNodes(NodeArray, nodeDatas, level)
{
    
if(parseInt(NodeArray.length)==0)
    
{
        
return;
    }

    
else
    
{
        
        
for(var i=0;i<parseInt(NodeArray.length);i++)
        
{
            
var cNode,nodeData,nodeCheckBox;
            cNode
=NodeArray[i];
            
////如果该节点在nodeDatas里则初始化checked = true;
            nodeData = cNode.getAttribute("NodeData");

            nodeCheckBox 
= cNode.getAttribute("CheckBox");

            
if (nodeCheckBox)
            
for(var j=0;j<nodeDatas.length;j++)
            
{
                
if(nodeDatas[j] == nodeData)
                
{
                    cNode.setAttribute(
"checked","true");
                    
//alert(nodeData);
                    break;
                }

            }

            
//如果有子节点,则继续递归
            if(parseInt(cNode.getChildren().length)!=0)
                findAndCheckedNodes(cNode.getChildren(), nodeDatas, level 
+ 1);    
        }

    }

}


function tree_oncheck(tree)
{
    
var node=tree.getTreeNode(tree.clickedNodeIndex);
    
var Pchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
    
    
//alert(Pchecked);
    setcheck(node,Pchecked);
    setParent(node,Pchecked);
//如果是选择那么选择其父接点.

    
//alert(OnInit);
    if (OnInit)
    
{
        OnInit();
    }

    FindCheckedFromNode(tree, 
1);
}


function FindCheckedFromNode(node, level) 
{
    
var i = 0;
    
var nodes = new Array();
    nodes 
= node.getChildren();
   
    
for (i = 0; i < nodes.length; i++
    
{
        
var cNode;
        cNode
=nodes[i];
        
if (cNode.getAttribute("checked"))
            AddChecked(cNode);
        
//else
        //    AddUnChecked(cNode);
        if (parseInt(cNode.getChildren().length) != 0 ) 
        
{
            FindCheckedFromNode(cNode, level 
+ 1);
        }

    }

}


function AddChecked(node) 
{
    
if (OnNodeChecked)
        OnNodeChecked(node);
}


function setcheck(node,Pc)
{
    
var i;
    
var ChildNode=new Array();
    
    ChildNode
=node.getChildren();

    
if(parseInt(ChildNode.length)==0)
        
return;
    
else
    
{
        
for(i=0;i<ChildNode.length;i++)
        
{
            
var cNode;
            cNode
=ChildNode[i];
            
if(parseInt(cNode.getChildren().length)!=0)
                setcheck(cNode,Pc);
            cNode.setAttribute(
"checked",Pc);
        }

    }

}


function setParent(node,Pc)
{
    
var parentNode = node.getParent();
    
if(parentNode)
    
{    
        
var parentNodeFather = parentNode.getParent();
        
if(parentNodeFather)
        
{
            setParent(parentNode,Pc);
        }

        
        
//parentNode.setAttribute("checked",Pc);
        
        
if(Pc)
        
{
            parentNode.setAttribute(
"checked",Pc);
        }

        
else
        
{
            checkBrother(parentNode,Pc,node.getAttribute(
"NodeData"))
        }

    }

}


function checkBrother(parentNode,Pc,nodeData)
{
    
var childNodes = new Array();
    childNodes 
= parentNode.getChildren();
    
if(childNodes.length >0)
    
{
        
var bChecked = true;
        
for(var i=0;i<childNodes.length;i++)
        
{
            
if(childNodes[i].getAttribute("checked"== true &&  childNodes[i].getAttribute("NodeData"!= nodeData)
            
{
                
//alert(i+childNodes[i].getAttribute("Text"));
                bChecked = false;
                
break;
            }

        }

        
if(bChecked)
        
{
            parentNode.setAttribute(
"checked",Pc);
        }

        
else
        
{
            
//所有父结点选择
            setParent(parentNode,!Pc)
        }

    }

    
else
    
{
        parentNode.setAttribute(
"checked",Pc);
    }

}
;


CS:

private void buildPrimaryTree()
        
{
            TreeView1.Attributes.Clear();
            TreeView1.Attributes.Add(
"oncheck""tree_oncheck(this)");
            TreeNode currNode 
= new TreeNode();
            currNode.Text 
= "全县市";
            currNode.Expanded 
= true;
            currNode.CheckBox 
= true;
            currNode.NodeData 
= "-1";
            TreeNode childNode;
            TreeView1.Nodes.Add(currNode);
            DataTable dtCountry 
= new Comm().GetEveryCounty();
            
string strCorpList = "-1,";
            
foreach (DataRow dr in dtCountry.Rows)
            
{
                childNode 
= new TreeNode();
                childNode.Text 
= dr["corpName"].ToString().Trim();
                childNode.NodeData 
= dr["corpCode"].ToString().Trim();
                childNode.CheckBox 
= true;
                
//childNode.Checked = true;
                currNode.Nodes.Add(childNode);
                strCorpList 
+= dr["corpCode"].ToString().Trim() + ",";
            }

            
this.corpList.Value = strCorpList;
        }

客户端:
function fnDoInit()
 {
  strCorpList = "";
  document.getElementById("corpList").value = strCorpList;
 } 
 function fnDoNodeChecked(cNode)
 { 
  var nodeData = cNode.getAttribute("NodeData");
  strCorpList += nodeData + "," ;
  //alert(strCorpList);
  document.getElementById("corpList").value = strCorpList;
 }
 var strCorpList = "";
 OnInit = fnDoInit;
 OnNodeChecked = fnDoNodeChecked;  
  </script>
</HEAD>
 <body onload=" BodyOnLoad();initchecknode('TreeView1')">

相关函数和操作:
var tnode = tree.getNodeFromIndex(tree.selectedNodeIndex);
var cNode = tree.getTreeNode(tree.clickedNodeIndex);
var nodeTarget = cNode.getAttribute("Target");
var nodeData = cNode.getAttribute("NodeData");
var nodeExpanded = cNode.getAttribute("Expanded");
var childNodes = cNode.getChildren();
使视图定位到选中的节点

var tree = document.getElementById("TreeView1");
            
var tnode = tree.getNodeFromIndex(tree.selectedNodeIndex);
            
var node = tnode.subtree.all.item("_tntext"0);
            node.scrollIntoView(
true);