树状结构
我用的是三层架构
dal层
public class pdal
{
public static DataTable view(string
rpname)
{
string sql = "select * from rp ,p where
rp.rppid=p.pid and p.pnodeld=0 and rpname='"+rpname+"'";
return
help.helps.GetDataSet(sql);
}
public static DataTable
views(int nodeld, string rpname)
{
string sql =
"select * from rp,p where rp.rppid=p.pid and p.pnodeld='"+nodeld+"'and rpname
='"+rpname+"'";
return help.helps.GetDataSet(sql);
}
}
bll层
public static DataTable view(string rpname)
{
return pdal.view(rpname);
}
public static DataTable views(int nodeld, string rpname)
{
return pdal.views(nodeld, rpname);
}
表 rp 和 p 表rp中 rpid是主键 rppid是外键 表p中pid是表rp中rppid的主键
rp p
rpid rpname rppid pid pname
purl porder pnodeld
角色id 角色名 拥有权限
1 a 1
2 c 1
3 a 3
4 b 2
5 b 4
6 c 4
权限id 权限名称 跳转的页面路径 节点排序 父节点
1 添加 null 1 0
2 删除 null 2 0
3 添加员工 null 1 1
4 删除员工 null 2 2
前台就一个 TreeView1空间
后台代码
protected void Page_Load(object sender, EventArgs e)
{
view();
}
private void view()
{
TreeView1.Nodes.Clear();
{
DataTable users = pbll.view("b"); //b是输入的值 可以用session来传
foreach (DataRow dr in users.Rows)
{
TreeNode er = new TreeNode();
er.Text =
dr["pname"].ToString();
er.Value =
dr["pid"].ToString();
//er.NavigateUrl=dr["url"].ToString();//跳转页面 这个没有业面可以省略 如果要跳转
在表p中填入路径就可以
TreeView1.Nodes.Add(er);//父节点
DataTable usert =
pbll.views(int.Parse(dr["pid"].ToString()), "b");
foreach
(DataRow ds in usert.Rows)
{
TreeNode re = new TreeNode();
re.Text =
ds["pname"].ToString();
re.Value =
ds["pid"].ToString();
er.ChildNodes.Add(re);//子节点
}
}
}
}

浙公网安备 33010602011771号