最近老师讲解了一下TreeView控件的使用,结合membership和RBAC模式实现用户权限管理,大致思想就是将每个角色可以访问的页面存入数据库,通过编程实现不同角色不同的菜单,首先数据库表需要有字段Pid,Pname,Purl,Parentid基本字段,
在Page_load中调用函数,
但是函数设计上还不够完美,应该设计函数出口直接返回TreeView,函数复用性不高,还要修改!
/// <summary>
/// TreeView生成--@by坤
/// </summary>
/// <param name="Pid">父节点Id</param>
/// <param name="T">节点</param>
public void CreateTree(string Pid, TreeNode T)
{
// SiteMapNodeItem sitenode = ;
BLL.Privilege pp= new Privilege();
DataSet pre = pp.GetList("ParentId='" + Pid + "'");//根节点查询
if (Pid == "0")
{
foreach (DataRow dr in pre.Tables[0].Rows) //遍历根节点
{
TreeNode Tn = new TreeNode();
Tn.Text = dr["Pname"].ToString();
CreateTree(dr["Pid"].ToString(), Tn); //递归查询下一层节点
TreeView1.Nodes.Add(Tn);
}
}
else
{
foreach (DataRow dr in pre.Tables[0].Rows) //不是根节点
{
TreeNode ChildT = new TreeNode();
ChildT.Text = dr["Pname"].ToString();
ChildT.NavigateUrl = dr["Purl"].ToString();
CreateTree(dr["Pid"].ToString(), ChildT);
T.ChildNodes.Add(ChildT);
}
}
}
在Page_load中调用函数,
if (!IsPostBack)
{
TreeNode T = new TreeNode();
CreateTree("0", T); //调用TreeView生成函数
}
但是函数设计上还不够完美,应该设计函数出口直接返回TreeView,函数复用性不高,还要修改!