TreeView控件和Menu控件的使用-.Net技术-3P代码网
繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> TreeView控件和Menu控件的使用

TreeView控件和Menu控件的使用

2006-11-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:TreeView和Menu都是用于导航,且与数据库绑定时的用法也极为相近,下面给出两个实例,请比较业务层的绑定方法 1. Tree.aspx 1. Tree.aspx LeftMenu_Tree 全部展开 全部收缩 2. Tree.aspx.cs us...
关键字:控件 TreeView Menu

TreeView和Menu都是用于导航,且与数据库绑定时的用法也极为相近,下面给出两个实例,请比较业务层的绑定方法

1. Tree.aspx

1. Tree.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Tree.aspx.cs" Inherits="NavTree"

EnableViewState="false" %>

LeftMenu_Tree

全部展开

全部收缩

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" %>

Top

Font-Names="宋体" BorderColor="background" BorderStyle="Solid" BorderWidth="0px"

StaticSubMenuIndent="10px" Height="20px" Orientation="Horizontal" StaticEnableDefaultPopOutImage="False">

BorderColor="#f1f1f1" />

BorderWidth="1px" />

BorderWidth="0px" />

VerticalPadding="0px" BorderColor="MenuBar" />

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

{

/**////

/// 系统导航 业务层

///

public class Navigation : Framework.BLL.BizObject

{

变量 构造函数#region 变量 构造函数

Sys.DAL.Navigation myData = new Sys.DAL.Navigation();

string ImagePath = Framework.Globals.WebRoot + "Images/";

/**////

/// 系统导航

///

public Navigation()

{ }

#endregion

目录树(TreeView)#region 目录树(TreeView)

DataTable ds_TreeView;

/**////

/// 根据当前用户ID加载目录树

///

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;

/**////

/// 加载获取导航菜单

///

public void BindMenu(Menu tvMenu)

{

ds_BindMenu = myData.BindMenu().Tables[0];

if (ds_BindMenu.Rows.Count > 0)

BindMenu(tvMenu, 0, (MenuItem)null);

}

/**////

/// 加载获取导航菜单

///

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

}

责任编辑:admin
相关文章