我想做一个以不同权限登录的类似与库存管理系统,里面还要以树形目录实现,想请位高手辅导一下我,谢谢啦,可以在这里留言,以后咱们可以留下联系方式

解决方案 »

  1.   

    数据库存储树节点名称,用户角色表配置用户的角色。角色节点表,配置角色有哪些权限,然后登陆的时候另:联系方式就算了。namespace CN.Web
    {
        public partial class LeftTreeView : System.Web.UI.Page
        {
            protected DataTable dataTbl1, dataTbl2;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                     string wherstr="";
                     if (Request.Cookies["Username"].Value.ToString().ToLower () == "admin" && Request.Cookies["Password"].Value.ToString() == "1")
                     {
                         wherstr = "";
                     }
                     else
                     {
                         if (Session["RoleId"] != null)
                         {
                             string roleid = Session["RoleId"].ToString();
                             wherstr = " where page_id in(select page_id from RolePageRelationship where Role_id=" + roleid + ")";
                         }
                     }    
                    
                    InitRootNodeDataTable(wherstr);
                    initTree(dataTbl1);
                    //tvCategory.CollapseAll();
                }
            }
            /// <summary>
            /// 初始化 RootNode DataTable
            /// </summary>
            private void InitRootNodeDataTable(string wherstr)
            {
                dataTbl1 = new DataTable();            dataTbl1 = DbAccess.GetDS("select * from page " + wherstr).Tables[0];
                //读取并将公共的分类信息添加到数据集中
                dataTbl1.TableName = "TreeView";
            }        /// <summary>
            /// 初始化树
            /// </summary>
            /// <param name="dt">取得所有的分类</param>
            private void initTree(DataTable dt)
            {
                this.tvCategory.Nodes.Clear();//先清理原先的
                if (dt != null && dt.Rows.Count == 0) return;
                DataRow[] Rows = dt.Select("Page_parent=0 ");
                if (Rows.Length == 0) return;
                foreach (DataRow row in Rows)
                {
                    TreeNode tNode = new TreeNode();
                    tNode.Value = row["Page_id"].ToString();
                    tNode.Text = row["Page_name"].ToString();
                    //tNode.NavigateUrl = "";
                    //tNode.Target = "MainFrameBS";//指向父窗体右边的那个iframe                this.tvCategory.Nodes.Add(tNode);
                    tNode.Expanded = true;
                    createChildNode(tNode, tNode.Value);
                }            ////添加一级“未分类”节点
                //TreeNode tNode1 = new TreeNode();
                //tNode1.Value = "-1";
                //tNode1.Text = "未分类";
                //tNode1.NavigateUrl = "BasicInfoConfig.aspx?Class_ID=" + tNode1.Value + "";
                //tNode1.Target = "MainFrameBS";//指向父窗体右边的那个iframe            //this.tvCategory.Nodes.Add(tNode1);
                //tNode1.Expanded = true;
            }
            /// <summary>
            /// 创建子节点
            /// </summary>
            /// <param name="node"></param>
            /// <param name="strParentNo"></param>
            private void createChildNode(TreeNode node, string strParentNo)
            {
                //string parentId="";
                DataRow[] Rows = this.dataTbl1.Select("Page_parent='" + strParentNo + "' and Page_parent<>0");
                foreach (DataRow row in Rows)
                {
                    TreeNode childNode = new TreeNode();                childNode.Value = row["Page_id"].ToString();
                    childNode.Target = "mainFrame";//指向父窗体右边的那个iframe
                    childNode.Text = row["Page_name"].ToString();
                    childNode.NavigateUrl = "~/"+row["Page_url"].ToString(); ;                node.ChildNodes.Add(childNode);                createChildNode(childNode, row["Page_id"].ToString());
                }
            }
           
        }
    }
      

  2.   

    ASP.NET自带的TREEVIEW就可以哦。
      

  3.   

    用xml来存储菜单树吧,挺简单的
        Data.GetRole().TOString()+".xml"
      

  4.   

    首先不同的权限要用个radiobuttonlist控件,这里就举个两种权限的例子
    public partial class login : System.Web.UI.Page
    {
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            //1、接收数据
            //接收用户名对应的值
            string userName = txtUserName.Text;
            //接收密码对应的值
            string passWord = txtPassword.Text;
            int fcount=0;
            if (RadioUser.SelectedItem.Text == "用户1")
                fcount=1;
            else if (RadioUser.SelectedItem.Text == "用户2")
                fcount=2;
            //2、处理数据
            //调用CheckUser方法,验证用户是否合法,返回true则合法,否则不合法
            bool result = CheckUser(userName, passWord,fcount);
            //3、页面跳转
            //根据处理数据的结果,进行不同的页面转向
            if (!result)
            {
                //当前用户不合法
                Response.Write("<script language='javascript'>alter('用户名或者密码不正确,请重试!')</script>");
                return;
            }
            else
            {
                //当前用户合法
                //将用户名放入session对象中,以便后续页面访问
                if (fcount == 2)
                {
                    Session["userName"] = userName;
                    Response.Redirect("mtoyAdmin.aspx");
                }
                else if (fcount == 1)
                {
                    Session["userName"] = userName;
                    Response.Redirect("mtoyUser.aspx");
                }
            }
        }        //验证用户是否合法,返回true或者false
        private bool CheckUser(string userName, string passWord,int fcount)
        {
             //首先进行数据库的操作
             //建立连接字符串
            string connectionString = @"Data Source=.\sqlexpress;Initial Catalog=toyDB;User ID=sa;passWord=1234";
               //使用连接字符串,创建连接
               SqlConnection con = new SqlConnection(connectionString);//括号内为连接对象
               //打开连接对象
               con.Open();
               //创建Command对象
               SqlCommand cmd = new SqlCommand();
               //创建SQL语句
               string sql = "";
               if (fcount == 2)
                   sql = "select * from toy_userInfo2 where userName='" + userName + "' and passWord='" + passWord + "'";
               else if (fcount == 1)
                   sql = "select * from toy_userInfo1 where userName='" + userName + "' and passWord='" + passWord + "'";
               //为Command对象赋予参数
               cmd.Connection = con;
               cmd.CommandText = sql;
               //执行查询操作。返回一个表
              SqlDataReader sdr=cmd.ExecuteReader();
              bool flag = false;
              if (sdr.Read())//判定有没有数据
              {
                  //如果有数据意味着用户合法
                  flag = true;
              }
               //收尾工作必须到位
               //关闭连接对象
              if (con != null)
              {
                  con.Close();
              }
               //返回结果
              return flag;
        }}