根据权限动态加载数据库菜单的DevExpressNavBar导航栏的实现(高手勿进)

ssy888 2010-01-29 04:05:14
首先这里下载免费的 控件 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); //在每个组里添加子菜单
}
}





...全文
658 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
man145 2011-08-25
  • 打赏
  • 举报
回复
楼主这能绑定几层啊
ssy888 2010-01-29
  • 打赏
  • 举报
回复

ssy888 2010-01-29
  • 打赏
  • 举报
回复
楼上的哥们。。那东西300多M,邮件发不了。。。

--------------------------------------
另外终于发现怎么贴图了,原来google chrome显示不了



gao19870901 2010-01-29
  • 打赏
  • 举报
回复
哥们,控件能压缩给发一下吗?邮箱296966892@qq.com
gao19870901 2010-01-29
  • 打赏
  • 举报
回复
哥们,控件能压缩给发一下吗?邮箱296966892@qq.com
tzs2304 2010-01-29
  • 打赏
  • 举报
回复
up下 蹭个分
ssy888 2010-01-29
  • 打赏
  • 举报
回复
不好意思。。不会贴图-。-
ssy888 2010-01-29
  • 打赏
  • 举报
回复
图1:
[img]https://mail.google.com/mail/?ui=2&ik=4bcfd31d02&view=att&th=1267902c5bb8b66b&attid=0.2&disp=inline&realattid=f_g50nuosv1&zw[/img]

效果图:

[img]https://mail.google.com/mail/?ui=2&ik=4bcfd31d02&view=att&th=1267902c5bb8b66b&attid=0.1&disp=inline&realattid=f_g50nuoso0&zw[/img]
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在计算机视觉领域,实时目标跟踪是许多应用的核心任务,例如监控系统、自动驾驶汽车和无人机导航等。本文将重点介绍一种在2017年备受关注的高效目标跟踪算法——BACF(Boosted Adaptive Clustering Filter)。该算法因其卓越的实时性和高精度而脱颖而出,其核心代码是用MATLAB编写的。 BACF算法全称为Boosted Adaptive Clustering Filter,是基于卡尔曼滤波器改进的一种算法。传统卡尔曼滤波在处理复杂背景和目标形变时存在局限性,而BACF通过引入自适应聚类和Boosting策略,显著提升了对目标特征的捕获和跟踪能力。 自适应聚类是BACF算法的关键技术之一。它通过动态更新特征空间中的聚类中心,更准确地捕捉目标的外观变化,从而在光照变化、遮挡和目标形变等复杂情况下保持跟踪的稳定性。此外,BACF还采用了Boosting策略。Boosting是一种集成学习方法,通过组合多个弱分类器形成强分类器。在BACF中,Boosting用于优化目标检测性能,动态调整特征权重,强化对目标识别贡献大的特征,从而提高跟踪精度。BACF算法在设计时充分考虑了计算效率,能够在保持高精度的同时实现快速实时的目标跟踪,这对于需要快速响应的应用场景(如视频监控和自动驾驶)至关重要。 MATLAB作为一种强大的数学计算和数据分析工具,非常适合用于算法的原型开发和测试。BACF算法的MATLAB实现提供了清晰的代码结构,方便研究人员理解其工作原理并进行优化和扩展。通常,BACF的MATLAB源码包含以下部分:主函数(实现整个跟踪算法的核心代码)、特征提取模块(从视频帧中提取目标特征的子程序)、聚类算法(实现自适应聚类过程)、Boosting算法(包含特征权重更新的代

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧