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();
}