TreeView 和 Menu 的用法
点击次数:24 次 发布日期:2008-11-26 10:28:11 作者:源代码网
|
源代码网推荐 TreeView和Menu都是用于导航,且与数据库绑定时的用法也极为相近,下面给出两个实例,请比较业务层的绑定方法 源代码网推荐
源代码网推荐 1. Tree.aspx 源代码网推荐 1. Tree.aspx 源代码网推荐 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Tree.aspx.cs" Inherits="NavTree" 源代码网推荐 EnableViewState="false" %> 源代码网推荐 <!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>LeftMenu_Tree</title> 源代码网推荐 </head> 源代码网推荐 <body bgcolor="#DDEDFD"> 源代码网推荐 <form id="form1" runat="server"> 源代码网推荐 <asp:LinkButton ID="lbtExpand" runat="server" OnClick="lbtExpand_Click" ToolTip="全部展开"> 源代码网推荐 全部展开 源代码网推荐 </asp:LinkButton> 源代码网推荐 <asp:LinkButton ID="lbtCollapse" runat="server" OnClick="lbtCollapse_Click" Visible="false"> 源代码网推荐 全部收缩 源代码网推荐 </asp:LinkButton> 源代码网推荐 <asp:TreeView ID="tvMenu" SkinID="tvClass" runat="server" ShowLines="true" NodeWrap="false"> 源代码网推荐 </asp:TreeView> 源代码网推荐 </form> 源代码网推荐 </body> 源代码网推荐 </html> 源代码网推荐 2. Tree.aspx.cs 源代码网推荐 using System; 源代码网推荐 using System.Data; 源代码网推荐 using System.Data.SqlClient; 源代码网推荐 using System.Configuration; 源代码网推荐 using System.Collections; 源代码网推荐 using System.Web; 源代码网推荐 using System.Web.Security; 源代码网推荐 using System.Web.UI; 源代码网推荐 using System.Web.UI.WebControls; 源代码网推荐 using System.Web.UI.WebControls.WebParts; 源代码网推荐 using System.Web.UI.HtmlControls; 源代码网推荐 public partial class NavTree : System.Web.UI.Page 源代码网推荐 { 源代码网推荐 Sys.BLL.Navigation myBiz = new Sys.BLL.Navigation(); 源代码网推荐 private void Page_Load(object sender, System.EventArgs e) 源代码网推荐 { 源代码网推荐 if (!Page.IsPostBack) 源代码网推荐 { 源代码网推荐 BindTree(); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 protected void BindTree() 源代码网推荐 { 源代码网推荐 //根据当前用户ID加载目录树 源代码网推荐 myBiz.BindTree(tvMenu, Framework.Globals.CurrentUser.UserID); 源代码网推荐 } 源代码网推荐 源代码网推荐 //全部展开节点 源代码网推荐 protected void lbtExpand_Click(object sender, EventArgs e) 源代码网推荐 { 源代码网推荐 tvMenu.ExpandAll(); 源代码网推荐 lbtExpand.Visible = false; 源代码网推荐 lbtCollapse.Visible = true; 源代码网推荐 } 源代码网推荐 源代码网推荐 //全部折叠节点 源代码网推荐 protected void lbtCollapse_Click(object sender, EventArgs e) 源代码网推荐 { 源代码网推荐 tvMenu.CollapseAll(); 源代码网推荐 lbtExpand.Visible = true; 源代码网推荐 lbtCollapse.Visible = false; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 3. Menu.aspx 源代码网推荐 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Menu.aspx.cs" Inherits="NavMenu" %> 源代码网推荐 <!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>Top</title> 源代码网推荐 </head> 源代码网推荐 <body> 源代码网推荐 <form id="form1" runat="server"> 源代码网推荐 <asp:Menu ID="Menu1" runat="server" BackColor="#f1f1f1" ForeColor="Black" Font-Size="12px" 源代码网推荐 Font-Names="宋体" BorderColor="background" BorderStyle="Solid" BorderWidth="0px" 源代码网推荐 StaticSubMenuIndent="10px" Height="20px" Orientation="Horizontal" StaticEnableDefaultPopOutImage="False"> 源代码网推荐 <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" BorderWidth="1px" 源代码网推荐 BorderColor="#f1f1f1" /> 源代码网推荐 <StaticHoverStyle BackColor="#cccccc" BorderColor="background" BorderStyle="Solid" 源代码网推荐 BorderWidth="1px" /> 源代码网推荐 <DynamicHoverStyle BackColor="#C6DDFE" BorderColor="background" BorderStyle="Solid" 源代码网推荐 BorderWidth="0px" /> 源代码网推荐 <DynamicMenuStyle BackColor="Menu" BorderStyle="Outset" BorderWidth="1px" HorizontalPadding="2px" 源代码网推荐 VerticalPadding="0px" BorderColor="MenuBar" /> 源代码网推荐 <DynamicMenuItemStyle HorizontalPadding="2px" VerticalPadding="2px" /> 源代码网推荐 </asp:Menu> 源代码网推荐 </form> 源代码网推荐 </body> 源代码网推荐 </html> 源代码网推荐 4. Menu.aspx.cs 源代码网推荐 using System; 源代码网推荐 using System.Data; 源代码网推荐 using System.Configuration; 源代码网推荐 using System.Collections; 源代码网推荐 using System.Web; 源代码网推荐 using System.Web.Security; 源代码网推荐 using System.Web.UI; 源代码网推荐 using System.Web.UI.WebControls; 源代码网推荐 using System.Web.UI.WebControls.WebParts; 源代码网推荐 using System.Web.UI.HtmlControls; 源代码网推荐 public partial class NavMenu : System.Web.UI.Page 源代码网推荐 { 源代码网推荐 Sys.BLL.Navigation myBiz = new Sys.BLL.Navigation(); 源代码网推荐 protected void Page_Load(object sender, EventArgs e) 源代码网推荐 { 源代码网推荐 if (!Page.IsPostBack) 源代码网推荐 { 源代码网推荐 myBiz.BindMenu(Menu1); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 5. 业务层:App_Code/Sys.BLL.Navigation.cs 源代码网推荐 using System; 源代码网推荐 using System.Data; 源代码网推荐 using System.Configuration; 源代码网推荐 using System.Web; 源代码网推荐 using System.Web.Security; 源代码网推荐 using System.Web.UI; 源代码网推荐 using System.Web.UI.WebControls; 源代码网推荐 using System.Web.UI.WebControls.WebParts; 源代码网推荐 using System.Web.UI.HtmlControls; 源代码网推荐 namespace Sys.BLL 源代码网推荐 { 源代码网推荐 /**//// <summary> 源代码网推荐 /// 系统导航 业务层 源代码网推荐 /// </summary> 源代码网推荐 public class Navigation : Framework.BLL.BizObject 源代码网推荐 { 源代码网推荐 变量 构造函数#region 变量 构造函数 源代码网推荐 Sys.DAL.Navigation myData = new Sys.DAL.Navigation(); 源代码网推荐 string ImagePath = Framework.Globals.WebRoot + "Images/"; 源代码网推荐 源代码网推荐 /**//// <summary> 源代码网推荐 /// 系统导航 源代码网推荐 /// </summary> 源代码网推荐 public Navigation() 源代码网推荐 { } 源代码网推荐 #endregion 源代码网推荐 源代码网推荐 目录树(TreeView)#region 目录树(TreeView) 源代码网推荐 DataTable ds_TreeView; 源代码网推荐 /**//// <summary> 源代码网推荐 /// 根据当前用户ID加载目录树 源代码网推荐 /// </summary> 源代码网推荐 public void BindTree(TreeView tvMenu, int userID) 源代码网推荐 { 源代码网推荐 ds_TreeView = myData.BindTree(userID).Tables[0]; 源代码网推荐 if (ds_TreeView.Rows.Count > 0) 源代码网推荐 BindTree(tvMenu, 0, (TreeNode)null); 源代码网推荐 } 源代码网推荐 源代码网推荐 private void BindTree(TreeView tvMenu, int ParentID, TreeNode pNode) 源代码网推荐 { 源代码网推荐 string NodeId = "MenuID"; 源代码网推荐 string NodeName = "MenuName"; 源代码网推荐 string ParentId = "ParentID"; 源代码网推荐 string Url = "Url"; 源代码网推荐 string Icon = "Icon"; 源代码网推荐 源代码网推荐 DataView dvTree = new DataView(ds_TreeView); 源代码网推荐 //过滤ParentId,得到当前的所有子节点 源代码网推荐 dvTree.RowFilter = ParentId + " = " + ParentID; 源代码网推荐 源代码网推荐 foreach (DataRowView drv in dvTree) 源代码网推荐 { 源代码网推荐 TreeNode Node = new TreeNode(); 源代码网推荐 源代码网推荐 if (pNode == null) 源代码网推荐 { //添加根节点 源代码网推荐 string nodename = drv[NodeName].ToString().Trim(); 源代码网推荐 string nodeid = drv[NodeId].ToString().Trim(); 源代码网推荐 源代码网推荐 Node.Text = nodename; 源代码网推荐 Node.ToolTip = nodename; 源代码网推荐 Node.Value = nodeid; 源代码网推荐 Node.Target = "main"; 源代码网推荐 源代码网推荐 if (drv[Icon].ToString().Trim() == string.Empty) 源代码网推荐 { Node.ImageUrl = ImagePath + "menu/ie.gif"; } 源代码网推荐 else 源代码网推荐 { Node.ImageUrl = ImagePath + "menu/" + drv[Icon].ToString().Trim(); } 源代码网推荐 源代码网推荐 //导航模式 & 选择模式 源代码网推荐 //要使一个节点处于导航模式,请将该节点的 NavigateUrl 属性值设置为空字符串 ("") 以外的值 源代码网推荐 //若要使节点处于选择模式,请将节点的 NavigateUrl 属性设置为空字符串。 源代码网推荐 Node.NavigateUrl = ""; 源代码网推荐 Node.SelectAction = TreeNodeSelectAction.Expand; 源代码网推荐 Node.Expanded = false; 源代码网推荐 Node.PopulateOnDemand = false; 源代码网推荐 源代码网推荐 tvMenu.Nodes.Add(Node); //***注意区别:根节点 源代码网推荐 BindTree(null, Int32.Parse(nodeid), Node); //再次递归 源代码网推荐 } 源代码网推荐 else 源代码网推荐 { //?添加当前节点的子节点 源代码网推荐 string nodename = drv[NodeName].ToString().Trim(); 源代码网推荐 string nodeid = drv[NodeId].ToString().Trim(); 源代码网推荐 源代码网推荐 Node.Text = nodename; 源代码网推荐 Node.ToolTip = nodename; 源代码网推荐 Node.Value = nodeid; 源代码网推荐 Node.Target = "main"; 源代码网推荐 源代码网推荐 if (drv[Icon].ToString().Trim() == string.Empty) 源代码网推荐 { Node.ImageUrl = ImagePath + "menu/ie.gif"; }//默认图标 源代码网推荐 else 源代码网推荐 { Node.ImageUrl = ImagePath + "menu/" + drv[Icon].ToString().Trim(); } 源代码网推荐 源代码网推荐 Node.NavigateUrl = drv[Url].ToString(); 源代码网推荐 Node.SelectAction = TreeNodeSelectAction.Expand; 源代码网推荐 Node.Expanded = false; 源代码网推荐 Node.PopulateOnDemand = false; 源代码网推荐 源代码网推荐 pNode.ChildNodes.Add(Node); //***注意区别:子节点 源代码网推荐 BindTree(null, Int32.Parse(nodeid), Node); //再次递归 源代码网推荐 } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 #endregion 源代码网推荐 源代码网推荐 导航菜单(Menu)#region 导航菜单(Menu) 源代码网推荐 DataTable ds_BindMenu; 源代码网推荐 /**//// <summary> 源代码网推荐 /// 加载获取导航菜单 源代码网推荐 /// </summary> 源代码网推荐 public void BindMenu(Menu tvMenu) 源代码网推荐 { 源代码网推荐 ds_BindMenu = myData.BindMenu().Tables[0]; 源代码网推荐 if (ds_BindMenu.Rows.Count > 0) 源代码网推荐 BindMenu(tvMenu, 0, (MenuItem)null); 源代码网推荐 } 源代码网推荐 /**//// <summary> 源代码网推荐 /// 加载获取导航菜单 源代码网推荐 /// </summary> 源代码网推荐 private void BindMenu(Menu tvMenu, int ParentID, MenuItem pNode) 源代码网推荐 { 源代码网推荐 DataView dvTree = new DataView(ds_BindMenu); 源代码网推荐 dvTree.RowFilter = "ParentId =" + ParentID;//过滤ParentId,得到当前的所有子节点 源代码网推荐 foreach (DataRowView drv in dvTree) 源代码网推荐 { 源代码网推荐 int id = Convert.ToInt32(drv["ID"]); 源代码网推荐 int parentID = Convert.ToInt32(drv["ParentID"]); 源代码网推荐 string text = drv["Text"].ToString(); 源代码网推荐 string value = drv["Value"] == DBNull.Value ? string.Empty : drv["Value"].ToString(); 源代码网推荐 string imageUrl = drv["ImageUrl"] == DBNull.Value ? string.Empty : drv["ImageUrl"].ToString(); 源代码网推荐 string navigateUrl = drv["NavigateUrl"] == DBNull.Value ? string.Empty : drv["NavigateUrl"].ToString(); 源代码网推荐 string target = drv["Target"] == DBNull.Value ? string.Empty : drv["Target"].ToString(); 源代码网推荐 源代码网推荐 MenuItem item = new MenuItem(); 源代码网推荐 if (pNode == null) 源代码网推荐 { //添加根节点 源代码网推荐 item.Text = text; 源代码网推荐 item.Value = value; 源代码网推荐 item.Target = target; 源代码网推荐 源代码网推荐 if (imageUrl == string.Empty) 源代码网推荐 { 源代码网推荐 item.ImageUrl = ImagePath + "winXP/winxp_folder.gif"; 源代码网推荐 } 源代码网推荐 else 源代码网推荐 { 源代码网推荐 item.ImageUrl = imageUrl; 源代码网推荐 } 源代码网推荐 item.NavigateUrl = navigateUrl; 源代码网推荐 item.Selectable = true; 源代码网推荐 源代码网推荐 tvMenu.Items.Add(item); //***注意区别:根节点 源代码网推荐 BindMenu(null, id, item); //再次递归 源代码网推荐 源代码网推荐 }//检索 源代码网推荐 else 源代码网推荐 { //?添加当前节点的子节点 源代码网推荐 item.Text = text; 源代码网推荐 item.Value = value; 源代码网推荐 item.Target = target; 源代码网推荐 源代码网推荐 if (imageUrl == string.Empty) 源代码网推荐 { 源代码网推荐 item.ImageUrl = ImagePath + "winXP/winxp_folder.gif"; 源代码网推荐 } 源代码网推荐 else 源代码网推荐 { 源代码网推荐 item.ImageUrl = imageUrl; 源代码网推荐 } 源代码网推荐 item.NavigateUrl = navigateUrl; 源代码网推荐 item.Selectable = true; 源代码网推荐 源代码网推荐 pNode.ChildItems.Add(item); //***注意区别:子节点 源代码网推荐 BindMenu(null, id, item); //再次递归 源代码网推荐 } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 #endregion 源代码网推荐 }//class end 源代码网推荐 } 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
