2003到2005 treeview javascript 展开状态问题:
下面的代码是我在用2003的treeview插件时用的,功能是frame右边的页面里修改了节点后,刷新左边的树,同时保持该节点的展开状态(默认load的时候我只展开一级)。不过我升级到2005改用vs2005里自带的treeview控件后,就出现错误,myTreeView.getChildren();//显示不支持该方法。请高手解救!<script language="javascript">
function SetStatus()
{
try{
myTreeView = document.getElementById('ControlProjectTreeView1_TreeView1');             var urlstr=location.href.split("?")[1];//从另一个页面传来的id参数
if (urlstr!=null)
{
urlstr=urlstr.split("classID=")[1];
var classID=urlstr.split("&")[0];//取得classID值
var mNodeArray=new Array(); .
var mNodeArray=myTreeView.getChildren();//这里出错,但是2003用的treeview插件可以
CheckAll(mNodeArray,classID);
mNodeArray=null;
}
}
catch(e){alert('error occur!'+e);}
}

function ExpandAllParentNode(node)
{
if(node!=null){
node.setAttribute("Expanded","True");
ExpandAllParentNode(node.getParent());
}
}


function CheckAll(arr,classID)
{
var i;
for(i=0;i<arr.length;i++)
{
var mNode=arr[i];
var currNodeID = mNode.getAttribute("ID");
if(currNodeID==classID)
{
ExpandAllParentNode(mNode);
break;
}
if((mNode.getChildren().lengh)!=0)
{
    CheckAll(mNode.getChildren(),classID);//递归遍历节点
}
}
    } </script>

解决方案 »

  1.   

    楼上是在回答我的问题?不是吧
    刚才对比了一下生成的Html代码,确实很大不同,高手帮分析一下:
    2003的Html代码,只贴出表示一个节点的部分:
    <tvns:treenode Expanded="True" NavigateUrl="Switch.aspx?Action=1&amp;ClassID=109" ImageUrl="../../DataImages/page.gif" Target="MainFrame" ID="109">
    <span onmousemove=javascript:title='公司论坛'>公司论坛</span>
    </tvns:treenode>2005的:
    <table cellpadding="0" cellspacing="0" style="border-width:0;">
    <tr>
    <td><img src="/macalia_job2/WebResource.axd?d=Fma7phtUvS4z3_0iyfadzia1znMoN6bAxMrsodm5f1I1&amp;t=633777689284687500" alt="" /></td><td><a href="Switch.aspx?Action=1&amp;ClassID=109" target="MainFrame" id="ControlProjectTreeView1_TreeView1t11i" tabindex="-1"><img src="../../DataImages/page.gif" alt="" style="border-width:0;" /></a></td><td style="white-space:nowrap;"><a href="Switch.aspx?Action=1&amp;ClassID=109" target="MainFrame" id="ControlProjectTreeView1_TreeView1t11" style="text-decoration:none;"><span onmousemove=javascript:title='公司论坛'>公司论坛</span></a></td>
    </tr>
    </table>
    2005的还多生成了下面的脚本代码:
    <script type="text/javascript">
    <!--
    var theForm = document.forms['Projecttreeview'];
    if (!theForm) {
        theForm = document.Projecttreeview;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    // -->
    </script><script src="/macalia_job2/WebResource.axd?d=1jSIUn8MyTFmu1kNXekkQg2&amp;t=633777689284687500" type="text/javascript"></script>2003的还有这些:
    <?XML:NAMESPACE PREFIX=TVNS />
    <?IMPORT NAMESPACE=TVNS IMPLEMENTATION="/webctrl_client/1_0/treeview.htc" />
    <tvns:treeview id="ControlProjectTreeView1_TreeView1" defaultStyle="background:#024289;color:white;" hoverStyle="color:#e8f4ff;" selectedStyle="color:#e8f4ff;" selectedNodeIndex="0" HelperID="__ControlProjectTreeView1_TreeView1_State__" systemImagesPath="/webctrl_client/1_0/treeimages/" selectExpands="true" onexpand="javascript: if (this.clickedNodeIndex != null) this.queueEvent('onexpand', this.clickedNodeIndex)" oncollapse="javascript: if (this.clickedNodeIndex != null) this.queueEvent('oncollapse', this.clickedNodeIndex)" oncheck="javascript: if (this.clickedNodeIndex != null) this.queueEvent('oncheck', this.clickedNodeIndex)" onselectedindexchange="javascript: if (event.oldTreeNodeIndex != event.newTreeNodeIndex) this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex)" style="display:inline-block;border-color:White;border-width:0px;height:100%;width:178px;">