当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  TreeView 和 Menu 的用法

 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)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华