2010-02-16 4 views
0

J'utilise ASP.NET avec C# 2.0 et Visual Studio 2005. J'utilise une page maître et des pages de contenu. J'ai un menu TreeView dans la page maître et quand un utilisateur sélectionne un élément de menu, je redirige vers cette page de contenu.asp.net treeview en évitant l'effondrement et expandall

Mon problème est qu'après qu'un utilisateur accède à la page de contenu, tous les écrans sont actualisés et la structure est réduite. Je veux que le treenode choisi reste étendu.

Quelqu'un peut-il m'aider?

Répondre

1

Utilisez-vous l'arborescence dans un UpdatePanel? En fait UpdatePanel ne supporte pas TreeView. J'ai cependant géré la même chose en utilisant beaucoup de codes supplémentaires. Vous pouvez voir la plupart d'entre eux sur http://www.geekays.net/post/Using-TreeView-inside-AJAX-UpdatePanel.aspx et un autre poste sur le même site: http://www.geekays.net/post/TreeView-control-postbacks-on-check-and-uncheck-of-the-nodes-Checkbox.aspx

J'ai ajouté javascripts comme suit également de faire défiler à un nœud de l'arbre qui a été sélectionné, mais le succès était pauvre:

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; 
}