我在ASP.NET中使用C#2.0和Visual Studio 2005.我正在使用母版页和内容页。我在母版页中有一个树视图菜单,当用户选择任何菜单项时,我会重定向到该内容页面。
我的问题是,在用户导航到内容页面后,所有treenodes刷新并且结构已折叠。我希望所选的treenode保持扩展。
有人可以帮帮我吗?
答案 0 :(得分:1)
您是否在任何UpdatePanel内使用树视图?实际上UpdatePanel不支持TreeView。然而,我使用了许多其他代码来管理相同的操作。您可以在http://www.geekays.net/post/Using-TreeView-inside-AJAX-UpdatePanel.aspx和同一网站上的其他帖子中看到大部分内容:http://www.geekays.net/post/TreeView-control-postbacks-on-check-and-uncheck-of-the-nodes-Checkbox.aspx
我还添加了如下所示的javascripts,以滚动到所选的树节点,但成功效果不佳:
function scrollSelectedTviewNodeToDisplay(){
try{
var inpSelectedNode = document.getElementById("ctl00_contRMSMaster_TViewDeviceHeirarchy_SelectedNode");
var divTree = document.getElementById("ctl00_contRMSMaster_TViewDeviceHeirarchy");
if (inpSelectedNode.value != "")
{
var objScroll = document.getElementById(inpSelectedNode.value);
//my treeview is contained in a scrollable div element
var posY =findPosY(objScroll);
//alert(posY);
if (divTree){
divTree.scrollTop = posY;
//alert(divTree.nodeType);
}
//this works as well bu, but there is not as much control over the y position
//document.all(inpSelectedNode.value).scrollIntoView(true);
}
}
catch(oException)
{
//alert(document.getElementById("ctl00_contRMSMaster_divTree"));
}
}
function findPosX(obj){
var curleft = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curleft += obj.offsetLeft
obj = obj.offsetParent;
}
}
else if (obj.x)
curleft += obj.x;
return curleft;
}
function findPosY(obj){
var curtop = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curtop += obj.offsetTop
obj = obj.offsetParent;
}
}
else if (obj.y)
curtop += obj.y;
return curtop;
}