/// <summary>
/// 建立菜单功能树
/// </summary>
/// <param name="myDv">包含菜单表所有记录的视图</param>
/// <param name="TNC">树节点的Collection,传入myTv.Nodes就行了</param>
/// <param name="classParentID">上级菜单ID</param>
public static void CreateMenuTree(DataView myDv, TreeNodeCollection TNC,string classParentID)
{
try
{
DataView dataView = new DataView();
dataView = myDv.Table.Copy().DefaultView ;
dataView.RowFilter = "ownerid = " + classParentID + "";
foreach(DataRowView drv in dataView)
{
if(UserRight.GetIsShow(drv["MenuValue"].ToString(),drv["Right"].ToString(),drv["MenuId"].ToString()))
{
TreeNode tn = new TreeNode();
tn.ID = drv["menuID"].ToString();
tn.Text = "<span onmousemove=javascript:title='" +
drv["menuName"].ToString().Trim() + "'>" + drv["menuName"].ToString().Trim() + "</span>";
tn.ImageUrl = drv["imgurl"].ToString();
tn.NavigateUrl = drv["menuhref"].ToString()==""?"":drv["menuhref"].ToString() + "?menuid=" + drv["menuid"].ToString();
tn.Target = "mainFrame";
TNC.Add(tn);
CreateMenuTree(myDv,tn.Nodes,tn.ID);
}
}
}
catch(Exception ex)
{
Hansheen.EOffice_Ora.Components.Error.Log("获取树错误:" + ex.Message);
}
}
调用实例:
protected Microsoft.Web.UI.WebControls.TreeView tvMenu;
。。。。。
DataView myDv = MenuData.GetMenuData();
MenuData.CreateMenuTree(myDv,tvMenu.Nodes,"0");
private void getAllCheckedNode( Microsoft.Web.UI.WebControls.TreeNodeCollection tnc)
{
node = Microsoft.Web.UI.WebControls.TreeNode
foreach(Microsoft.Web.UI.WebControls.TreeNode node in tnc)
{
if (node.Nodes.Count != 0 )
getAllCheckedNode(node.Nodes);
if (node.Checked )
insertIntoDs(node.Text, node.NodeData);
}
}
博客展示了使用C#建立菜单功能树的代码,通过传入包含菜单记录的视图、树节点集合和上级菜单ID,递归创建菜单树。同时处理了可能出现的异常,记录错误信息。还给出了调用实例及获取所有选中节点的方法。
1851

被折叠的 条评论
为什么被折叠?



