树状结构

我用的是三层架构

 

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);//子节点
                    }
               
}
            }
        }

posted @ 2010-11-12 10:48  稍侯..。纠结  阅读(967)  评论(1)    收藏  举报