只差一点点:页面刷新后用客户端脚本实现treeview自动展开?
我把点击节点的NodeData值当成一个treeID参数传递到下一页
如:http://location/index.aspx?treeID=170
现在程序可以运行,不报错,但只偶尔在第一次就选中子节点的情况下才执行正常,大多数时候无法展开,我不知道哪里错了,请高手帮忙
<script language="javascript">
function test()
{
var urlstr=location.href.split("?")[1];
if (urlstr!=null)
{
urlstr=urlstr.split("treeID=")[1];
urlstr=urlstr.split("&")[0];//取得treeID值
var mNodeArray=new Array();
var strindex;
mNodeArray=myTreeView.getChildren();
bl(mNodeArray,urlstr);
strindex=null;
mNodeArray=null;
}
}
function bl(arr,str)
{
var i;
for(i=0;i<arr.length;i++)
{
var mNode=arr[i];
var strtemp=mNode.getAttribute("NodeData");
if(strtemp==str)
{
strindex=mNode.getNodeIndex();
if(strindex.indexOf(".")!=-1)//当点击节点不是根节点时执行下一条语句
(mNode.getParent()).setAttribute("Expanded","True");//这样写行吗?
myTreeView.selectedNodeIndex=strindex;
}
if((mNode.getChildren().lenght)!=0)
bl(mNode.getChildren(),str);//递归遍历节点
}
}
</script>
问题点数:50、回复次数:10Top
1 楼shuangren(候鸟)回复于 2003-08-01 10:16:02 得分 0
意思就是页面刷新后让treeview保持刷新前的展开状态
if(strindex.indexOf(".")!=-1)//刚才注释写错了,应该是:当点击节点是子节点时执行下一条语句,因为根节点没有getParent()方法,用了会出错Top
2 楼fisheren(渔人)回复于 2003-08-01 10:28:24 得分 15
我觉得应该这样:
var tpNode=mNode.getParent();
tpNode.setAttribute("Expanded","True");
或者
eval((mNode.getParent()).setAttribute("Expanded","True"));Top
3 楼szhuk(小佳)回复于 2003-08-01 10:39:20 得分 15
ExpandAll属性设为true。Top
4 楼shuangren(候鸟)回复于 2003-08-01 10:41:56 得分 0
谢谢,但是没有任何变化Top
5 楼shuangren(候鸟)回复于 2003-08-01 10:58:14 得分 0
客户端好像没有ExpandAll属性Top
6 楼DoNotTomcat(TOM)回复于 2003-08-01 11:04:45 得分 10
gzTop
7 楼shuangren(候鸟)回复于 2003-08-01 11:24:56 得分 0
真晕,找到原因了,程序没问题,是一个很...不相干的小毛病引起的。唉,总算成功了
耽误大家许多时间,非常抱歉,就把上面那段代码分享给大家吧,CSDN没有实现此功能的贴,昨晚ao了一个通宵才写了那么十几行,没办法,菜Top
8 楼shuangren(候鸟)回复于 2003-08-01 15:54:26 得分 0
发现节点不展开但又不报错的原因,可能是脚本执行的过早,treeview还没完成初使化。
以前曾经碰过到把<script>块放在<body>前出错而放在</body>后不出错的现象。
因此应该尽量把这类操作页面元素的脚本往后放,甚至用一些事件来控制脚本运行的时间。Top
9 楼diysoft(Frog Prince)回复于 2003-08-02 14:39:14 得分 10
真晕,找到原因了,程序没问题,是一个很...不相干的小毛病引起的。唉,总算成功了
耽误大家许多时间,非常抱歉,就把上面那段代码分享给大家吧,CSDN没有实现此功能的贴,昨晚ao了一个通宵才写了那么十几行,没办法,菜
-------------------------------------------------------------
怎么解决的, 什么样的小毛病呢???Top
10 楼shuangren(候鸟)回复于 2003-08-03 13:40:44 得分 0
diysoft(Frog Prince)
深层原因还不清楚,那需要对页面的加载及解释的顺序有深刻了解才行,我估计可能是上面所说的“脚本执行的过早,treeview还没完成初使化”,能够确定的是程序没问题,如果发生不展开不报错的情况,尽量把的脚本往后放,甚至用一些事件来推后脚本运行的顺序,比如说用onload事件来触发脚本。Top




