¡¡¡¡ASP.NET2.0ÌṩÁËÒ»¸ö¹¦ÄÜÇ¿´óµÄTreeView¿Ø¼þ£¬µ«ÊÇËü¿´ÆðÀ´ÓÐÒ»¸öȱÏÝ£ºËüºÃÏñ²»Äܹ»¸ú×ÙÓû§×îºóÑ¡ÔñµÄÒ»¸ö½Úµã¡£Èç¹ûÄã¹ö¶¯µ½µÚ50¸ö½ÚµãÈ»ºóÕ¹¿ª¸Ã½Úµã£¬ÄÇôµ±µ¥»÷Á´½ÓÒ³Ãæ½øÐлط¢ºó£¬Äã±ØÐëÖØÐÂÀûÓùö¶¯ÌõÏÂÀ­µ½ÄãÏëÒªµÄ½ÚµãλÖá£

¡¡¡¡ÔÚ.NET½ÏÔçµÄ°æ±¾ÀÄú¿ÉÄÜ¿¼ÂÇʹÓÃSmartNavigationÕâ¸öÌØÐÔ.SmartNavigationÊÇWebÒ³ÃæÖ¸ÁîµÄÒ»¸öÊôÐÔ£¬ËüµÄȡֵΪ²¼¶ûÖµ£¬Ò»¸öÉèÖÃΪtrueµÄÒ³ÃæÖ¸Áî¿´ÆðÀ´ÀàËÆÈçÏ£º

£¼%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" SmartNavigation="true" %£¾

¡¡¡¡²»¹ý£¬ÕýÈçºÃ¶àÈËÒѾ­×¢Òâµ½µÄ£¬SmartNavigation±¾Éí¾ÍÓÐÏ´Ò°¢ÎÊÌ⣬ÊÂʵÉÏ΢ÈíÒ²±»Õâ¸öÎÊÌâËùÀ§ÈÅÒÔÖÁÓÚÔÚASP.NET2.0ÀïÌí¼ÓÁËMaintainScrollbackPositionOnPostbackÊôÐÔ¶øÈ¡´úSmartNavigation ¡£Òź¶µÄÊÇ£¬ÎÒÔÚʹÓÃËüÃÇʱ£¬¸Ð¾õËüÃǶ¼ÓÐһЩÎÊÌ⣬ÎÒÉԺ󽫽øÐнâÊÍ¡£

¡¡¡¡±¾ÎÄÎÒ½«½éÉÜSmartNavigationºÍMaintainScrollbackPositionOnPostback ÔÚά»¤Ò³Ãæ»Ø·¢Î»Ö÷½ÃæµÄȱµã£¬²¢ÌṩÈçºÎÀûÓÃjavascriptÀ´½â¾öÕâ¸öÎÊÌ⣬Õâ¸öС¼¼Çɼ´Ê¹¶Ô¸´ÔÓµÄWebÒ³ÃæÒ²Í¬ÑùÓÐЧ.

¡¡¡¡ÔÙ¼ûÁËSmartNavigationeb£¬»¶Ó­MaintainScrollbackPositionOnPostback

¡¡¡¡SmartNavigationÖ÷Òª×÷ÓÃÊǼõÉÙÒ³Ãæµ¼º½Ê±µÄÉÁ¶¯£¬ËüÖ÷ÒªÀûÓÃÊʵ±µÄIFramesÀ´½øÐÐÕâ¸ö¹¤×÷²¢½ö½öÏÔʾ¸Ä±äµÄ²¿·Ö¡£SmartNavigation ͬÑù±»Éè¼ÆÎªÄܹ»Î¬»¤Ò³ÃæÎ»Öã¬ÔªËؽ¹µã£¬»Ø·¢ä¯ÀÀÆ÷·ÃÎÊÀúÊ·¼Ç¼µÄ×÷Óá£Òź¶µÄÊÇ£¬¼´Ê¹Î¢ÈíÖªµÀSmartNavigationÒѾ­È¥µô£¬µ«ÊǼì²éMSDNÎĵµ£¬ÄúÈÔÈ»Äܹ»¿´µ½SmartNavigationÆäʵ½ö½ö±»¶¨ÒåΪ"¹ýʱ"µÄ ¡£ÀûÓÃGOOGLEµÄËÑË÷Äú¿ÉÒÔËѵ½´ó¼Ò¶ÔSmartNavigationµÄÌÖÂÛ.

¡¡¡¡ÏÂÒ»²½

¡¡¡¡ASP.NET2.0Òý½øÁËMaintainScrollbackPositionOnPostback£¬ºÍSmartNavigationÀàËÆ£¬Äú¿ÉÒÔÔÚPageÊôÐÔÀïÉèÖÃËüµÄֵΪtrue»òÕßΪfalse¡£

£¼%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" MaintainScrollPositionOnPostback="true" %£¾

¡¡¡¡·Ç³£¼òÃ÷£¬Õâ¸öÊôÐÔ/ÊôÐÔÖµ¶ÔÊÇÓÃÀ´Î¬»¤Ò³ÃæÎ»Öõġ£Òź¶µÄÊÇ£¬ËüÖ»ÊÇά»¤Ò³ÃæµÄλÖã¬ÒòΪÈç¹ûÄãÔÚÓû§¿Ø¼þÀïʹÓÃÁËTreeView¿Ø¼þ£¬È»ºóÔÚÒ³ÃæÀïʹÓøÃÓû§¿Ø¼þ£¬ÄÇÃ´Ò³ÃæÔÚÔڻط¢ºóÄú½«·µ»Øµ½Óû§¿Ø¼þµÄλÖöø²»ÊÇTreeView½ÚµãλÖá£

¡¡¡¡¼òµ¥µÄ˵£¬MaintainScrollbackPositionOnPostbackÖ»ÊÇÓÃÀ´Î¬»¤Ò³ÃæµÄ»Ø·¢Î»Öá£Èç¹ûÄãµÄÒ³Ãæ¹Ì¶¨£­£­Ò²¾ÍÊÇÒ»¸öÓ¦ÓóÌÐòÄÇÑù²»ÐèÒª½øÐÐÀûÓùö¶¯Ìõ½øÐÐÉÏϹö¶¯£¬ÄÇôÕâ¸öÊôÐÔ¶ÔÄã¿ÉÄÜÎÞÓá£Èç¹ûÄãµÄÒ³ÃæºÜ³£ÐèÒª¹ö¶¯£¬ÄÇôÄã¾ÍÐèÒªÀûÓøÃÊôÐÔ.

¡¡¡¡ÔÚTreeViewÀïά»¤¿Ø¼þµÄλÖÃ

¡¡¡¡×î½ü£¬ÎÒÔÚ¿ª·¢Ò»¸öWebÓ¦ÓóÌÐòWindowsy£¬Ò²¾ÍÊÇÿһ¸öÒ³Ãæ¶¼»áÈ«ÆÁÏÔʾ¶ø²»Êǹö¶¯¡£Ò³ÃæÀïʹÓÃÀàTreeViewÀ´½øÐе¼º½ÏëÁбíÒ»Ñù½øÐÐÏÔʾ£¬µ«ÊÇÒ³Ãæ±¾Éí²»ÐèÒªÉÏϹö¶¯¡£µ«ÊÇÎÊÌâÊÇÕâÀïµÄÊý¾ÝÁпÉÄÜÐèÒªÀ©Õ¹Ê¹µÃÒ³Ãæ³öÏÖ¹ö¶¯.ÎÒ×¼±¸Ê¹ÓÃÈçϵķ½Ê½½â¾öÕâ¸öÎÊÌâ.
Ê×ÏÈ£¬ÀûÓÃTreeView¿Ø¼þµÄSelectedNodeÊôÐÔ£¬¿ÉÒÔÖªµÀÄĸö½Úµã±»Ñ¡È¡£¬Õâ¸ö±»Ñ¡È¡µÄ½ÚµãÐèÒª±£´æÆðÀ´£¬Ëü×îÖÕ»á³ÌÐòΪHTMLÔªËØ¡£Èç¹ûÎÒÖªµÀÁ˱»Ñ¡ÔñHTML¿Ø¼þµÄID£¬ÄÇôÎҾͿÉÒÔ¹ö¶¯µ½¸Ã¿Ø¼þ²¢ÉèÖøÿؼþΪµ±Ç°½¹µã¡£È·Êµ£¬Èç¹ûÄú¿´ÒÔÏÂʹÓÃTreeView¿Ø¼þµÄÒ³ÃæHTML´úÂ룬Ä㽫·¢ÏÖÉú³ÉµÄÒ»¸öÒþ²Ø£¼input£¾ÔªËØ£¬ÒÔ¼°ÎªtextboxÀàÐÍ£¬ËüµÄID¿ÉÄÜÀàËÆTreeViewx_SelectedNode

£¼input type="hidden" name="TreeView1_SelectedNode" id="TreeView1_SelectedNode" value="TreeView1t54" /£¾

¡¡¡¡ÓÐÁËÕâЩ֪ʶ£¬Äã¾ÍÖªµÀ¸ÃÔõô×öÁË£¬»ù±¾·½·¨ÊÇÒþ²ØµÄInputÊÇÒ»¸ötextbox£¬ÎÒÃÇÒª×öµÄ¾ÍÊÇÖªµÀ½«À´³ÊÏ×µÄÄÚÈÝ¡£Ò»¸öTreeView×îÖÕ³ÊÏÖΪHTML±í¸ñ,½ÚµãµÄÖµ±»ÓÃÀ´×÷Ϊµ¥Ôª¸ñµÄÖµ,£¼TD£¾ÔªËسÊÏÖ½ÚµãÃû³Æ,ËùÒÔͨ¹ý²éÕÒµ¥Ôª¸ñID²¢¹ö¶¯µ½ÄÇÀï.

¡¡¡¡ÎªÁ˾ßÌå˵Ã÷×ö·¨£¬ÎÒʹÓÃTreeView±àдÁËһЩ´úÂ룬ÔÚPage_Loadʱ¼äÀï¼ÓÔØÒ»¶Î½Å±¾À´ÕÒµ½ÐèÒªµÄµ¥Ôª¸ñ£¨²Î¿¼ÏÂ±í£©£¬ÔÚ£¼body£¾µÄonloadʱ¼äÀïµ÷Óøú¯Êý.

Imports System.Collections.Generic
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
InjectLoadEvent()
If (IsPostBack) Then Return
TreeView1.Nodes.Clear()
Dim chicken As New TreeNode("Chicken")
¡¡TreeView1.Nodes.Add(chicken)
¡¡Dim beef As New TreeNode("Beef")
¡¡TreeView1.Nodes.Add(beef)
¡¡Dim pork As New TreeNode("Pork")
¡¡TreeView1.Nodes.Add(pork)
¡¡Dim fish As New TreeNode("Fish")
¡¡TreeView1.Nodes.Add(fish)
¡¡chicken.ChildNodes.Add(New TreeNode("Crepes Florentine with Buffalo Chicken"))
¡¡fish.ChildNodes.Add(New TreeNode("Linguine with White Clam Sauce"))
¡¡pork.ChildNodes.Add(New TreeNode("Pork Loin with Peanut and Madarin Orange Sauce"))
¡¡beef.ChildNodes.Add(New TreeNode("Standing Rib Roast with Fennel and Blue Cheese Potatoes"))
¡¡' We need a bunch of stuff here so we will add some stubs
¡¡Dim I As Integer
¡¡For I = 1 To 50
¡¡¡¡chicken.ChildNodes.Add(New TreeNode("Placeholder " + I.ToString()))
¡¡¡¡fish.ChildNodes.Add(New TreeNode("Placeholder " + I.ToString()))
¡¡¡¡pork.ChildNodes.Add(New TreeNode("Placeholder " + I.ToString()))
¡¡¡¡beef.ChildNodes.Add(New TreeNode("Placeholder " + I.ToString()))
¡¡Next
¡¡TreeView1.CollapseAll()
End Sub
Public Sub InjectLoadEvent()
¡¡Dim script As String = _
¡¡¡¡¡¡"function LoadEvent()" + _
¡¡¡¡¡¡"{{" + _
¡¡¡¡¡¡" try" + _
¡¡¡¡¡¡" {{" + _
¡¡¡¡¡¡" var elem = document.getElementById('{0}_SelectedNode');" + _
¡¡¡¡¡¡" if(elem != null )" + _
¡¡¡¡¡¡" {{" + _
¡¡¡¡¡¡" var node = document.getElementById(elem.value);" + _
¡¡¡¡¡¡" if(node != null)" + _
¡¡¡¡¡¡" {{" + _
¡¡¡¡¡¡" node.scrollIntoView(true);" + _
¡¡¡¡¡¡" {1}.scrollLeft = 0;" + _
¡¡¡¡¡¡" }}" + _
¡¡¡¡" }}" + _
¡¡" }}" + _
¡¡" catch(oException)" + _
¡¡" {{}}" + _
¡¡"}}"
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "LoadEvent", _
String.Format(script, TreeView1.ClientID, Panel1.ClientID), True)
¡¡End Sub
End Class

¡¡¡¡ÏÂÃæµÄ´úÂëÏÔʾÁËÒ³ÃæµÄ²¼¾Ö£º

£¼%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %£¾
£¼!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"£¾
£¼html xmlns="http://www.w3.org/1999/xhtml" £¾
£¼head runat="server"£¾
¡¡£¼title£¾Focus Tree Node on Postback£¼/title£¾
£¼/head£¾
£¼body onload="LoadEvent()"£¾
¡¡£¼form id="form1" runat="server"£¾
¡¡¡¡£¼div£¾
¡¡¡¡¡¡£¼asp:Panel ID="Panel1" runat="server" Height="200px" Width="200px" ScrollBars="Both"£¾
¡¡¡¡¡¡¡¡£¼asp:TreeView ID="TreeView1" runat="server"£¾
¡¡¡¡¡¡¡¡¡¡£¼SelectedNodeStyle BackColor="#8080FF" /£¾
¡¡¡¡¡¡¡¡£¼/asp:TreeView£¾
¡¡¡¡¡¡£¼/asp:Panel£¾
¡¡¡¡£¼/div£¾
¡¡£¼/form£¾
£¼/body£¾
£¼/html£¾

¡¡¡¡ÏÂͼÏÔʾÁ˱¾Àý×ÓÔËÐеĽá¹û

¡¡¡¡×îºó£¬ÏÂÃæµÄ´úÂëÏÔʾÁËjavascriptµÄ×¢È뷽ʽ£º

£¼script£¾
function LoadEvent()
{
¡¡try
¡¡{
¡¡¡¡var elem = document.getElementById('TreeView1_SelectedNode');
¡¡¡¡if(elem != null )
¡¡¡¡{
¡¡¡¡¡¡var node = document.getElementById(elem.value);
¡¡¡¡¡¡if(node != null)
¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡node.scrollIntoView(true);
¡¡¡¡¡¡¡¡Panel1.scrollLeft = 0;
¡¡¡¡¡¡}
¡¡¡¡}
¡¡}
¡¡catch(oException)
¡¡{}
}// --£¾
£¼/script£¾

¡¡¡¡ÓÃJavascript¶¨ÒåµÄLoadEventº¯Êý½«²éÕÒÒþ²Ø×Ö¶Î,ÎÒÃÇÀûÓÃTreeView¿Ø¼þµÄClientID ²éÕÒËùÓÐÔªËØ,²»¹ý,ÔÚǶÌ×¶à¸öTreeView¿Ø¼þºó,Ãû³Æ½«±äµÃ·Ç³£³¤.ÕÒµ½µ¥Ôª¸ñµÄÖµºó,ÎÒʹÓÃscrollIntoView·½·¨.scrollLeftÊôÐÔ½«Èùö¶¯Ìõ¹ö¶¯µ±Ç°Î»ÖÃ.