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
}