DevExpress 之NavBarControl动态添加分组

        private void Group()
        {
            NavBarGroup kersen = new NavBarGroup();
            GroupMode(kersen,"KS","科森科技");
            NavBarItem HRCenter = new NavBarItem();
            ItemMode(HRCenter, "HRCenter", "人力资源中心");
            NavBarItem HRService = new NavBarItem();
            ItemMode(HRService, "HRService", "人力资源服务");

            kersen.ItemLinks.AddRange(new NavBarItemLink[] {
                new NavBarItemLink(HRCenter)
                ,new NavBarItemLink(HRService)
            });
        }
      
        private void GroupMode(NavBarGroup nbGroup, string Name, string Caption)
        {
            nbGroup.Name = Name;
            nbGroup.Caption = Caption;
            nbGroup.SmallImageIndex = -1;
            nbGroup.LargeImageIndex = -1;
            //添加到导航栏所有分组集合
            navBarControl1.Groups.Add(nbGroup);
        }
        private void ItemMode(NavBarItem nbItem, string Name, string Caption)
        {
            nbItem.Name = "nbItem1";
            nbItem.Caption = "供应商资料";
            nbItem.SmallImageIndex = -1;
            nbItem.LargeImageIndex = -1;
            nbItem.LinkClicked += Item_Click;
            //添加到导航栏所有子项目集合
            navBarControl1.Items.Add(nbItem);
        }
        private void Item_Click(object sender, NavBarLinkEventArgs e)
        {
            MessageBox.Show("点击了:" + e.Link.Caption);
        }

------------------------------------------------------------我是分割线---------------------------------------------------------------

又改进了一下,在数据库新建了菜单表,动态添加菜单,用循环的方式,其实借用了Treelist添加节点的方式。

先上效果图:

数据库表结构:

这是我的菜单表

下面是表数据,方便理解

然后是语法:

         //循环添加组
        private void DetailReportGroup()
        {
//这个是封装了一个链接数据库的类,你们可以自己链接数据库
            string sql = "select ProId,ProName from ProMenu where ProType = 'Group'";
            DataTable dt;
            if (!DB.AF.execSql(sql, sqlconn, out dt))
            {
                MessageBox.Show("查询菜单组失败!");
                return;
            }
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    NavBarGroup nbGroup = new NavBarGroup();
                    nbGroup.Name = dt.Rows[i]["ProId"].ToString();
                    nbGroup.Caption = dt.Rows[i]["ProName"].ToString();
                    navBarControl1.Groups.Add(nbGroup);
                    DetailReportItem(nbGroup);//这里调用Item的函数
                }

            }
        }
//对组循环添加Item
        private void DetailReportItem(NavBarGroup GroupName)
        {
            string sql = "select ProId,ProName from ProMenu where ProType = 'Item' and UpProId = '" + GroupName.Name + "'";
            DataTable dt;
            if (!DB.AF.execSql(sql, sqlconn, out dt))
            {
                MessageBox.Show("查询菜单失败!");
                return;
            }
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    NavBarItem nbItem = new NavBarItem();
                    nbItem.Name = dt.Rows[i]["ProId"].ToString();
                    nbItem.Caption = dt.Rows[i]["ProName"].ToString();
                    nbItem.LinkClicked += Item_Click;
                    GroupName.ItemLinks.Add(nbItem);
                }
            }

        }
//一个按钮点击事件调用组的函数,也可放在Load里面调用
        private void DetailReport_ItemClick(object sender, ItemClickEventArgs e)
        {
            DetailReportGroup();

        }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值