菜单都是在数据库里面查询的,根据用户的权限动态生成的,第二张图片是在WinForm里面
做的,现在想在Web里面做出一模一样的功能,如何把菜单输出到页面上呢?并且是按照对应的
主菜单进行显示的。 

解决方案 »

  1.   

    楼主可以用Treeview来实现动态隐藏节点!            TreeNode tn0, tn00, tn01, tn02, tn03, tn04, tn05, tn06, tn1, tn10, tn11, tn12, tn13, tn14, tn2, tn20, tn21, tn22, tn23, tn24, tn3, tn4, tn5;
                tn0 = this.TreeView1.Nodes[0];
                tn00 = this.TreeView1.Nodes[0].ChildNodes[0];
                tn01 = this.TreeView1.Nodes[0].ChildNodes[1];
                tn02 = this.TreeView1.Nodes[0].ChildNodes[2];
                tn03 = this.TreeView1.Nodes[0].ChildNodes[3];
                tn04 = this.TreeView1.Nodes[0].ChildNodes[4];
                tn05 = this.TreeView1.Nodes[0].ChildNodes[5];
                tn06 = this.TreeView1.Nodes[0].ChildNodes[6];
                tn1 = this.TreeView1.Nodes[1];
                tn10 = this.TreeView1.Nodes[1].ChildNodes[0];
                tn11 = this.TreeView1.Nodes[1].ChildNodes[1];
                tn12 = this.TreeView1.Nodes[1].ChildNodes[2];
                tn13 = this.TreeView1.Nodes[1].ChildNodes[3];
                tn14 = this.TreeView1.Nodes[1].ChildNodes[4];
                tn2 = this.TreeView1.Nodes[2];
                tn20 = this.TreeView1.Nodes[2].ChildNodes[0];
                tn21 = this.TreeView1.Nodes[2].ChildNodes[1];
                tn22 = this.TreeView1.Nodes[2].ChildNodes[2];
                tn23 = this.TreeView1.Nodes[2].ChildNodes[3];
                tn24 = this.TreeView1.Nodes[2].ChildNodes[4];
                tn3 = this.TreeView1.Nodes[3];
                tn4 = this.TreeView1.Nodes[4];
                tn5 = this.TreeView1.Nodes[5];
                string qx = Session["qx"].ToString();
                string name = Session["uname"].ToString();
                if (qx == "17")
                {
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn20);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn21);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn22);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn24);
                    this.TreeView1.Nodes.Remove(tn0);
                    this.TreeView1.Nodes.Remove(tn1);            }
                else if (name == "admin" && qx == "1")
                {
                    this.TreeView1.Visible = true;
                }
                else if (qx == "2")
                {
                    this.TreeView1.Nodes[1].ChildNodes.Remove(tn11);
                    this.TreeView1.Nodes[1].ChildNodes.Remove(tn13);
                    this.TreeView1.Nodes[1].ChildNodes.Remove(tn14);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn22);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn23);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn24);
                    this.TreeView1.Nodes.Remove(tn0);
                    this.TreeView1.Nodes.Remove(tn4);
                    this.TreeView1.Nodes.Remove(tn5);
                    this.TreeView1.Nodes.Remove(tn3);
                }
                else if (qx == "5")
                {
                    this.TreeView1.Nodes[0].ChildNodes.Remove(tn03);
                    this.TreeView1.Nodes.Remove(tn1);
                    this.TreeView1.Nodes.Remove(tn2);
                    this.TreeView1.Nodes.Remove(tn3);
                    this.TreeView1.Nodes.Remove(tn4);
                    this.TreeView1.Nodes.Remove(tn5);
                }
                else if (qx == "6")
                {
                    this.TreeView1.Nodes[1].ChildNodes.Remove(tn10);
                    this.TreeView1.Nodes[1].ChildNodes.Remove(tn12);
                    this.TreeView1.Nodes.Remove(tn0);
                    this.TreeView1.Nodes.Remove(tn2);
                    this.TreeView1.Nodes.Remove(tn3);
                    this.TreeView1.Nodes.Remove(tn4);
                    this.TreeView1.Nodes.Remove(tn5);            }            else if (qx == "16")
                {
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn20);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn21);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn23);
                    this.TreeView1.Nodes.Remove(tn0);
                    this.TreeView1.Nodes.Remove(tn1);
                    this.TreeView1.Nodes.Remove(tn3);
                    this.TreeView1.Nodes.Remove(tn4);
                    this.TreeView1.Nodes.Remove(tn5);
                }
                else if (qx == "20")
                {
                    this.TreeView1.Nodes[0].ChildNodes.Remove(tn00);
                    this.TreeView1.Nodes[0].ChildNodes.Remove(tn01);
                    this.TreeView1.Nodes[0].ChildNodes.Remove(tn02);
                    this.TreeView1.Nodes[0].ChildNodes.Remove(tn04);
                    this.TreeView1.Nodes[0].ChildNodes.Remove(tn05);
                    this.TreeView1.Nodes[0].ChildNodes.Remove(tn06);
                    this.TreeView1.Nodes[1].ChildNodes.Remove(tn10);
                    this.TreeView1.Nodes[1].ChildNodes.Remove(tn11);
                    this.TreeView1.Nodes[1].ChildNodes.Remove(tn12);
                    this.TreeView1.Nodes[1].ChildNodes.Remove(tn14);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn22);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn23);
                    this.TreeView1.Nodes[2].ChildNodes.Remove(tn24);
                    this.TreeView1.Nodes.Remove(tn3);
                    this.TreeView1.Nodes.Remove(tn4);
                    this.TreeView1.Nodes.Remove(tn5);
                }
                else
                {
                    this.TreeView1.Visible = false;
                }
              
      

  2.   

    怎么不好控制啊,我上面不是说了吗, if (qx == "17")如果 if (权限 == "")隐藏你要隐藏的字段!
      

  3.   

    我在WinForm里面是用的一个控件,然后一个循环就全部出来了,我就是想知道在Web里面如何把菜单输出来啊。 private void Menu_Load()
            {
                dt_role = new BLL.sys_SetRoleManager().GetUserRoleByUserID(allensingleton.UserID);
                _outlookBar = new LumiSoft.UI.Controls.WOutlookBar.WOutlookBar();
                //_outlookBar.BorderStyle = BorderStyle.FixedSingle; 
                _outlookBar.ImageList = imageList;
                _outlookBar.ImageListSmall = imageList;
                _outlookBar.Dock = DockStyle.Fill;
                _outlookBar.ItemClicked += wOutlookBar_ItemClicked;
                _outlookBar.BarClicked += wOutlookBar_BarClicked;
                _outlookBar.ViewStyle.BarClientAreaColor = Color.White;
                _outlookBar.ViewStyle.BarItemHotTextColor = Color.Black;
                _outlookBar.ViewStyle.BarItemTextColor = Color.Black;
                Item it = null;
                Bar bar = null;
                string strMenu = string.Empty;
                for (int i = 0; i < dt_role.Rows.Count; i++)
                {
                    if (string.IsNullOrEmpty(strMenu) || strMenu != dt_role.Rows[i]["MenuGroupName"].ToString())
                    {
                        bar = _outlookBar.Bars.Add(dt_role.Rows[i]["MenuGroupName"].ToString());
                        bar.ItemsStyle = ItemsStyle.IconSelect;
                        strMenu = dt_role.Rows[i]["MenuGroupName"].ToString();
                    }                                             it = bar.Items.Add(dt_role.Rows[i]["FunctionName"].ToString(), dt_role.Rows[i]["FrmName"].ToString(),
                                       int.Parse(dt_role.Rows[i]["ICO"].ToString()), true, dt_role.Rows[i]["FrmName"].ToString());
                    it.AllowStuck = false;
                }
                ploutlookBar.Controls.AddRange(new Control[] { _outlookBar });
            }
      

  4.   

    一个比较常用的方法.
    webservice处理数据读取,把你从数据库里取出的数据封装成json或者xml字符串对象.
    前台ajax调用webservice.接收到这个字符串,用each解一下输出成dt dl或者tr td就行了
      

  5.   


    我现在得到的数据本身就是一个 dt 啊,只是不知道如何把 dt 里面的内容输出到网页上,
    我试过:
    StringBuilder sb = new StringBuilder();
    sb.Append()
    虽然上面的代码可以输出来,但是还是不够完善。
      

  6.   


    我现在的数据本身就是一个 dt,如何把dt里面的内容呈现在页面?
      

  7.   

    你去百度搜个js导航菜单样式,然后 通过后台代码控制生成HTML页面代码的方式 很容易实现,找个js+css导航菜单就行了