我用的是三层架构
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);//子节点 } } } }
转载于:https://www.cnblogs.com/jjxxtt/archive/2010/11/12/1875466.html
