如果词节点被选中,则父亲被选中,这是不可能的,因为checkbox的父亲不可能是checkbox
把问题描述清楚了再来吧

解决方案 »

  1.   

    所有的节点都有checkbox ,是父亲的checkbox 被选中。
      

  2.   

    这个问题很老了,你用的是.net中的,treeview 还是自己用js写的tree阿?
      

  3.   

    第二个问题,不刷新 可以用icallbackhandle 或者用ajax
      

  4.   

    .net2005中的
      <asp:TreeView ID="RoleTreeView" runat="server" ShowCheckBoxes="All" onclick="javascript:OnTreeNodeChecked()" AutoGenerateDataBindings="false" >
                                        </asp:TreeView>
    第一个问题解决了。
    只剩下第二个问题。
    回四楼的根本就没有任何后台事件,用ajax做什么,只是想点击节点的时候让页面没有任何反应。
      

  5.   

    JS文件:var parentNodeCount = 0;
    var nodeCount = 0;function onParentNodeImageClick(node) {
        var divNode = document.getElementById(node.name.replace("parentNodeImage","parentNodeDiv"));
    var imageNode = node;  if (divNode.style.display == "none"){
    imageNode.src = "minus.png";
    divNode.style.display = "";
    }
    else {
    imageNode.src = "plus.png";
    divNode.style.display = "none";
    }
    }前台代码:
    <link href="tree.css" rel="stylesheet" type="text/css" />
    <script src="tree.js" type="text/javascript"></script><title>TreeView Example</title></head><body>
    <div id="treeview"></div>
    <script language="javascript">
    addExpandCollapseAll(); addNode("WickedOrange.com","http://www.wickedorange.com","mainFrame"); startParentNode("Search Engines");
    addNode("Google","http://www.google.com","mainFrame");
    addNode("Yahoo","http://www.yahoo.com","mainFrame");
    endParentNode(); startParentNode("Dev Sites");
       addNode("CodeProject","http://www.codeproject.com","mainFrame");
    addNode("MSDN","http://www.msdn.com","mainFrame");
          startParentNode("Dev Sites");
       addNode("CodeProject","http://www.codeproject.com","mainFrame");
    addNode("MSDN","http://www.msdn.com","mainFrame");
          startParentNode("Dev Sites");
       addNode("CodeProject","http://www.codeproject.com","mainFrame");
    addNode("MSDN","http://www.msdn.com","mainFrame");
    endParentNode();
    endParentNode();
    endParentNode();</script>
    function onParentNodeTextClick(node) {
        var divNode = document.getElementById(node.name.replace("parentNodeText","parentNodeDiv"));
        var imageNode = document.getElementsByName(node.name.replace("parentNodeText","parentNodeImage"))[0]; if (divNode.style.display == 'none') {
    imageNode.src = "minus.png";
    divNode.style.display = '';
    }
    else {
    imageNode.src = "plus.png";
    divNode.style.display = 'none';
    }
    }function onNodeTextClick(node) {
        var imageNode = document.getElementsByName(node.name.replace("nodeText","nodeImage"))[0];
        setSelectedNode(imageNode);
    }
    function onNodeImageClick(node, url, target){
        var imageNode = node
        setSelectedNode(imageNode);
    }function setSelectedNode(imageNode){
        for (index = 0; index < this.nodeCount; index++) {
    document.getElementsByName("nodeImage" + index)[0].src = "page.png";
        }
        imageNode.src = "pageSelected.png";
    }
    function expandAll(){
    for (index = 0; index < this.parentNodeCount; index++) {
    document.getElementById("parentNodeDiv" + index).style.display = "";
            document.getElementsByName("parentNodeImage" + index)[0].src = "minus.png";     
    }
    }
    function collapseAll(){
    for (index = 0; index < this.parentNodeCount; index++) {
    document.getElementById("parentNodeDiv" + index).style.display = "none";
            document.getElementsByName("parentNodeImage" + index)[0].src = "plus.png";     
    }
    }function startParentNode(text){
    document.write('<table border="0" cellpadding="1" cellspacing="0">');
    document.write('  <tr>');
    document.write('    <td><img src="plus.png" name="parentNodeImage' + parentNodeCount + '" onclick="onParentNodeImageClick(this)" style="cursor:pointer;"/></td>');
    document.write('    <td><a class="parentTreeNode" name="parentNodeText' + parentNodeCount + '" onclick="onParentNodeTextClick(this);" style="cursor:pointer;">');
    document.write(text);
    document.write('</a>');
    document.write('  </td>');
    document.write('  </tr>');
    document.write('  <tr>');
    document.write('    <td></td><!-- SPACING -->');
    document.write(' <td><DIV id="parentNodeDiv' + parentNodeCount + '" style="display:none">');
        this.parentNodeCount = this.parentNodeCount + 1;
    }
    function endParentNode(){
    document.write('</DIV></td>');
    document.write('  </tr>');
    document.write('</table>');
    }
    function addNode(text, url, target){
    document.write('<table border="0" cellpadding="1" cellspacing="0">');
    document.write('  <tr>');
    document.write(' <td>');
        document.write('<a href="' + url + '" target="' + target + '" onfocus="this.hideFocus=true;" style="outline-style:none;">');
    document.write('<img src="page.png" border="0" name="nodeImage' + this.nodeCount + '" onclick="onNodeImageClick(this);" />');
        document.write('</a>');
    document.write(' </td>');
    document.write('    <td><a name="nodeText' + this.nodeCount + '" onclick="onNodeTextClick(this);" href="' + url + '" target="' + target + '" class="normalTreeNode" onfocus="this.hideFocus=true;" style="outline-style:none;">' + text + '</a></td>');
    document.write('  </tr>');
    document.write('</table>');
        this.nodeCount = this.nodeCount + 1;
    }
    function addExpandCollapseAll(){
    document.write('<table width="100%" border="0">');
    document.write('  <tr>');
    document.write('    <td align="right" width="50%"><a onclick="expandAll();" class="expandCollapse" style="cursor:pointer;">Expand All</a></td>');
    document.write('    <td alight="left" width="50%"><a onclick="collapseAll();" class="expandCollapse" style="cursor:pointer;">Collapse All</a></td>');
    document.write('  </tr>');
    document.write('</table>');  
    }
      

  6.   

    cs:
        protected void Page_Load(object sender, EventArgs e)
        {
            this.TreeView1.Attributes.Add("onclick", "CheckEvent()");
        }
    js:
          <script language="javascript"> 
    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); 
        } 

        </script>
    把 js这部分放在aspx中,就可以了。刚才我还以为你会在后台进行操作呢 ^-^
      

  7.   

    楼上的不行有错误,而且我已经用onclick()调用一个脚本解决第一个问题了!
    有没有什么办法让节点的文字不能点击!
      

  8.   

    现在还想实现一个节点的checkbox始终是选中的状态不可更改怎么实现!