IE6下TreeView节点定位展开无效问题

Justin-Liu
博客专家认证
2010-11-23 10:35:56

如图,当点击二级子节点的时候,页面刷新无法展开目标树节点,而是全都折叠起来,求解。

核心代码:

                TreeView treeView = new TreeView();
TreeNode node = new TreeNode();
node.Value = "";
//GetFolderNode是一个递归 取到子节点
node = mUtility.GetFolderNode(node, root, baseURL, this);
node.Text = doclib.Title;
node.NavigateUrl = "Javascript:" + //this.Page.ClientScript.GetPostBackEventReference(this, node.Value);
"if(window.location.href.indexOf('?')>0)" +
"{window.location.href=window.location.href.substring(0,window.location.href.indexOf('?'));}" +
"else{window.location.href=window.location.href;}";
treeView.Nodes.Add(node);
treeView.ShowLines = true;
treeView.EnableViewState = false;
//TreeView1.CollapseAll();
TreeNode targetNode = null;
try
{
if (HttpContext.Current.Request["RootFolder"] != null && HttpContext.Current.Request["RootFolder"] != "")
{
string treePath = HttpContext.Current.Request["RootFolder"];
string[] treePaths = treePath.Split(new char[] { '/' });
targetNode = treeView.Nodes[0];
for (int i = 1; i < treePaths.Length; i++)
{
targetNode = GetTargetNode(targetNode, treePaths[i]);
}
}
}
catch { }
//目标树节点不为空
if (targetNode == null)
{
node.Expanded = false;
}
private TreeNode GetTargetNode(TreeNode targetNode, string treeNodeName)
{
foreach (TreeNode node in targetNode.ChildNodes)
{
if (node.Text.Equals(treeNodeName, StringComparison.OrdinalIgnoreCase))
{
targetNode = node;
node.Expanded = true;
}
else
{
node.Expanded = false;
}
}
return targetNode;
}

请提供有价值的建议,谢谢!
...全文
251 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
xx_lzj 2010-11-25
  • 打赏
  • 举报
回复
既然是与“技术”这样的字眼有关,怀疑编码问题。
ycproc 2010-11-24
  • 打赏
  • 举报
回复
难道是 兼容性问题 ?
sunzhi523 2010-11-24
  • 打赏
  • 举报
回复
以后多多交流 哦。。。
Justin-Liu 2010-11-24
  • 打赏
  • 举报
回复
up
Justin-Liu 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 tm62490309 的回复:]
楼主不考虑手写TreeView吗?
[/Quote]
为什么要把简单的问题复杂化呢?
panchunlong 2010-11-24
  • 打赏
  • 举报
回复
看一下ie6的设置
tm62490309 2010-11-24
  • 打赏
  • 举报
回复
楼主不考虑手写TreeView吗?
Justin-Liu 2010-11-24
  • 打赏
  • 举报
回复
关键我只在IE6下才有问题 展不开 其他都是正常的

IE6下 有两个带有“技术”的文件夹没问题,其他都有问题。
xx_lzj 2010-11-24
  • 打赏
  • 举报
回复

private TreeNode GetTargetNode(TreeNode targetNode, string treeNodeName)
{
foreach (TreeNode node in targetNode.ChildNodes)
{
if (node.Text.Equals(treeNodeName, StringComparison.OrdinalIgnoreCase))
{
targetNode = node;
node.Expanded = true;
}
else
{
node.Expanded = false;
}
}
return targetNode;
}

foreach循环毫无必要。如果仅为了Expand,Request等也无必要,在递归时,设置节点的SelectedAction属性即可。
tm62490309 2010-11-24
  • 打赏
  • 举报
回复
这种情况下,一般我的处理方式为:自己写一个TreeView。
可以逐级加载,也可以一下全加载完。
我现在所做的项目,全部都是手写的TreeView 。
一方面提高用户体验,一方面可控性强。唯一的麻烦问题是:写第一个TreeView相对麻烦一些。
之后使用就容易了。
ycproc 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 rock870210 的回复:]
既然如此,那就想办法解决不刷新吧!
[/Quote]
一个一个的来

可以反过来 解决问题
  • 打赏
  • 举报
回复
路过,学习,请问楼主用的是vs2003吗?
Rock870210 2010-11-24
  • 打赏
  • 举报
回复
既然如此,那就想办法解决不刷新吧!
Justin-Liu 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 rock870210 的回复:]
treeView.EnableViewState = false;
设为False后页面刷新无法保存原始状态(展开后状态)。不仅二级子几点,其他的应该都无法保存。
改为True试试
[/Quote]
不好用
Justin-Liu 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hch126163 的回复:]
你是点击菜单,链接到了一个新的页面?

你在加载事件判断一下,url, 根据不同url,设置不同节点展开就可以了
[/Quote]
我就是这么做的目前,只是在ie6下不好用
Justin-Liu 2010-11-24
  • 打赏
  • 举报
回复
up
Justin-Liu 2010-11-24
  • 打赏
  • 举报
回复
继续等待合理化建议
Justin-Liu 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 fengyarongaa 的回复:]
难道是 兼容性问题 ?
[/Quote]
那应该是IE高版本不兼容啊
louti 2010-11-23
  • 打赏
  • 举报
回复
fang updatapanel里?
Justin-Liu 2010-11-23
  • 打赏
  • 举报
回复
加载更多回复(6)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧