根据权限动态加载数据库菜单的DevExpressNavBar导航栏的实现

 首先这里下载免费的 控件 ASP.NET Controls (the ASPxperience Suite)  
http://www.devexpress.com/Products/Free/WebRegistration60/
注册激活,然后下载安装,不多说了。

今天先抛开权限,说下如何吧数据库菜单加载到DevExpress ASPxNavBar控件上。

数据库结构见图1. Menu为主菜单,SubMenu为子菜单,MenuID外键

在你的页面上打开工具栏,放上名为: ASPxNavBar 的控件, 这款导航栏控件的组(group)集合(group collections)用来绑定我们主菜单的值,每个group内含有Items用来绑定我们的子菜单值。具体代码见下:

protected void Page_Load(object sender, EventArgs e)
  {
  if (!IsPostBack)
  {
  AddMenu(); //页面加载
  }
  }



  //加载菜单的方法
  private void AddMenu()
  {
  navPublic.Groups.Clear();//清空控件的值
  DataView dvRoot = 从你的数据层或者逻辑层取出你的主菜单列表
  DataView dvChild = 从你的数据层或者逻辑层取出你的子菜单列表
  FillMenuRoot(dvRoot); //调用下面的方法绑定主菜单到控件的组集合(group collections)
  for (int i = 0; i < navPublic.Groups.Count; i++) //读出共有多少主菜单作为组,来做循环
  {
  FillMenuChild(dvChild, navPublic.Groups[i]); //依次为每个组添加子菜单
  }
  }


  private void FillMenuRoot(DataView dvRoot) //传递主菜单的数据表
  {
  foreach (DataRowView drv in dvRoot) //在主菜单表里以每一行做循环操作
  {
  NavBarGroup group = new NavBarGroup(drv.Row["MenuName"].ToString(), drv.Row["MenuID"].ToString(), null, drv.Row["MenuUrl"].ToString()); // 为每个主菜单创建个新分组,构造体中传递菜单名,ID,有自定义图片的绑没图片的NULL,菜单的链接
  navPublic.Groups.Add(group); //navPublic是导航栏菜单实例,往组集合里添加每个组
  }
  }
  




  private void FillMenuChild(DataView dvChild, NavBarGroup group) //子菜单表,分组 作为参数传递
  {
  dvChild.RowFilter = "MenuID=" + group.Name.Trim(); //更具group里的name(主菜单ID)过滤出相关联的子菜单
  foreach (DataRowView drv in dvChild) //以每个子菜单做循环
  {
  NavBarItem groupItem = new NavBarItem(drv.Row["SubMenuName"].ToString(), drv.Row["SubMenuID"].ToString()); //为每个子菜单创建新item,构造体中传递子菜单名,和子菜单ID
  if (drv.Row["SubMenuUrl"] != null) //如果子菜单的链接不为空
  {
  groupItem.NavigateUrl = drv.Row["SubMenuUrl"].ToString(); //往item里附加页面链接
  }
  group.Items.Add(groupItem); //在每个组里添加子菜单
  }
  }

 

 

ASPxNavBar控件使用的问题

20
[ 标签: aspxnavbar, 控件 ]

     下面代码为初始化ASPxNavBar控件(版本为:DevExpress.Web.v9.1)

      实现功能为:点击左边菜单,在右边的IFRAME加载对应的页面。

在点击左边菜单项的时候,用JavaScript获取此控件的Name或者Target 属性,因为把要加载对应的页面赋值给了name和target。用了event.srcElement等等获取的代码都获取不到。

 

      navbarGroup = new NavBarGroup();
            navbarGroup.Text = menuName;

            DataRow[] rows = ds.Tables[0].Select("C_W_C_WEB_SYSMENU_ID = " + menuId + "");

            if (rows.Length >0)
            {
                foreach (DataRow row in rows)
                {
                    string sonmenuName = row["MENUNAME"].ToString();
                    string src = "test.aspx";
                    navbarItem = new NavBarItem();
                    navbarItem.Text = sonmenuName;  

                    navbarItem.Name = src;
                    navbarItem.Target = src;
                    navbarGroup.Items.Add(navbarItem);
                }
            }

=========JavaScript代码==========================

                                    <dxnb:ASPxNavBar ID="MenuBar"  runat="server" EncodeHtml="true"  Width="150px" Height="100%"  AutoCollapse="True" CssFilePath="~/App_Themes/Blue/{0}/styles.css" CssPostfix="Blue" ImageFolder="~/App_Themes/Blue/{0}/">
                                        <ItemTextTemplate>
                                            <dxhl:ASPxHeadline CssClass="PageStatus" id="hlItem" runat="server" ShowContentAsLink='<%# !Container.Item.Selected %>' NavigateUrl='<%# Eval("NavigateUrl") %>' EnableViewState="False" EnableDefaultAppearance="False" ContentText='<%# Eval("Text") %>' TailPosition="KeepWithLastWord" EnableTheming="False">
                                                <ContentStyle LineHeight="118%" />
                                            </dxhl:ASPxHeadline>
                                        </ItemTextTemplate>
                                        <CollapseImage Url="~/App_Themes/Blue/Web/nbCollapse.gif" />
                                        <ExpandImage Url="~/App_Themes/Blue/Web/nbExpand.gif" />
                                        <ClientSideEvents ItemClick="function()
                                                                    {
                                                                        var src = event.srcElement.name;
                                                                        window.frames['middleContent'].location.replace(src);
                                                                     }" />
                                    </dxnb:ASPxNavBar>

20100603102918-1364408841.jpg


 

 

ASPxNavBar 代码绑定数据的方法

分类: 专业相关 477人阅读 评论(0) 收藏 举报

方法一:

 public void MyGetDate()
    {
        string sSql = @"select * from sModule where ParentIndex='0' and SystemId='1000'";

        DataTable table = CommClass.GetDataTable(sSql);

        ASPxNavBar1.Groups.Clear();

        int i = 0;

        foreach (DataRow dr in table.Rows)
        {
            ASPxNavBar1.Groups.Add(dr["ModuleName"].ToString());           

            this.MyGetSecond(dr["ModuleId"].ToString(),i++);
        }

    }

    public void MyGetSecond(string sParent,int i)//加子集
    {
        DevExpress.Web.ASPxNavBar.NavBarItem item = null;

        string sSql = String.Format(@"select * from sModule where ParentIndex='{0}' and  SystemId='1000'",sParent);// ParentIndex='0' and
        //string sSql = "select Did, MenuName from WebMenu where MenuKind=1 order by SeqIndex";
        DataTable table = CommClass.GetDataTable(sSql);

        if (table.Rows.Count > 0)
        {
            foreach (DataRow row in table.Rows)
            {
                string sDid = row["Did"].ToString();
                string sName = row["ModuleName"].ToString();
                string sUrl = string.Format("webArticle.aspx?menudid={0}", sDid);

                item = new DevExpress.Web.ASPxNavBar.NavBarItem(sName, sName, "", sUrl);


                ASPxNavBar1.Groups[i].Items.Add(item);
            }
        }
    }

 

 

方法二:

 string strSql = @"select * from sModule where SystemId='1000' and ParentIndex=0";
        DataTable table = CommClass.GetDataTable(strSql);

        foreach (DataRow  dr in table.Rows)
        {
            DevExpress.Web.ASPxNavBar.NavBarGroup NavBarGroup1=new DevExpress.Web.ASPxNavBar.NavBarGroup(dr["ModuleName"].ToString());
            this.ASPxNavBarsModule.Groups.Add(NavBarGroup1);

            strSql = @"select * from sModule where ParentIndex=" + dr["ModuleId"].ToString() + " order by ModuleIndex desc";
            DataTable dt = CommClass.GetDataTable(strSql);
            foreach (DataRow dr1 in dt.Rows)
            {
                DevExpress.Web.ASPxNavBar.NavBarItem NavBarItem1=new DevExpress.Web.ASPxNavBar.NavBarItem(dr1["ModuleName"].ToString());
                NavBarGroup1.Items.Add(NavBarItem1);
            }
        }

转载于:https://www.cnblogs.com/gaoxuzhao/archive/2011/10/10/2205053.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值