我的表单包含从数据库中的表动态创建的菜单。如下
public void FourthMenu(ToolStripMenuItem mnu, string submenu)
{
string Seqchild = "SELECT FRM_NAME,FourthMenuID FROM MNU_FOURTH WHERE ThirdMenuID = '" + submenu + "'";
SqlDataAdapter dachildmnu = new SqlDataAdapter(Seqchild, conn);
DataTable dtchild = new DataTable();
dachildmnu.Fill(dtchild);
foreach (DataRow dr in dtchild.Rows)
{
ToolStripMenuItem SSMenu2 = new ToolStripMenuItem(dr["FRM_NAME"].ToString(), null, new EventHandler(ChildClick));
FifthMenu(SSMenu2, dr["FourthMenuID"].ToString());
mnu.DropDownItems.Add(SSMenu2);
}
outputa如图所示。
要求是按用户显示菜单。例如 如果user1只有访问帐户和财务页面的权限,那么菜单将显示在帐户和财务上。
如果user2有权访问第4th1页,那么菜单将显示到第4位,但不应显示“第4位”。
我如何处理它,任何文章参考等......
提前致谢......
答案 0 :(得分:0)
您可以使用此类数据库设计,它可以提供用户权限级别呈现。
Table 1 - Users
Users
{
string Name,
int Id,
int RoleId
}
Table 2- Roles
Roles
{
string Name,
int Id,
bool HasWriteAccess
}
Table 3 - MenuItems
MenuItems
{
string Title,
int Id,
int RoleId
}
所以你的查询将是
select * from MenuItems mi, Roles role, Users user
where mi.RoleId = role.Id and
user.RoleId = role.Id and
user.Id= LoggedInUserId;
这将根据登录的用户提供菜单项。
希望它有所帮助!!!