从数据库以编程方式禁用或启用菜单项 [英] Disable or Enable Menu items programatically from database

查看:74
本文介绍了从数据库以编程方式禁用或启用菜单项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为数据库中的用户禁用或启用我的菜单栏,我已经完成了父菜单项,但我也想禁用或启用子菜单项,这里是我的代码

 StrSql =  从[User _ +中选择serial_no,optionName,MenuID会话[  UserEmail] +  ]; 
StrSql = StrSql + Order By serial_no;
DataSet rs =(DataSet)MethodClass.ConnectionToQuery(StrSql);
if (rs.Tables [ 0 ]。Rows.Count > 0
{
for (i = 0 ; i < MnuUserManagement.Items.Count; i ++)
{
StrOpt = MnuUserManagement.Items [i] .Text.ToString();
if (StrOpt!= - || StrOpt ==
{
< span class =code-keyword> for (j = 0 ; j < rs.Tables [ 0 ]。Rows.Count; j ++)
{
if (StrOpt == rs.Tables [ 0 ]。行[j] [ optionName]。ToString())
{
MnuUserManagement.Items [i] .Enabled = true ;
}
}
}
}
}

解决方案

商店来自列表中数据表的数据

使用列表菜单即HTML菜单

在aspx页面中使用if else条件来隐藏用户没有权限的菜单


我已经解决了我的问题,但感谢你们所有人,解决方案是:

 StrSql =  从[User _ + Session [中选择serial_no,optionName,MenuID  UserEmail] +  ]; 
StrSql = StrSql + Order By serial_no;
DataSet rsmenu =(DataSet)MethodClass.ConnectionToQuery(StrSql);
if (rsmenu.Tables [ 0 ]。Rows.Count > 0
{

for var i = 0 ; i < ; rsmenu.Tables [ 0 ]。Rows.Count; i ++)
{
foreach (MenuItem item in MnuUserManagement.Items)
{
if (item.Text == rsmenu.Tables [ 0 ]。行[i] [ < span class =code-string> optionName]。ToString())
{
item.Enabled = true ;
// 这里我为子菜单项启动一个新的数据集
StrSql = 从[User _ + Session [中选择serial_no,optionName,MenuID > UserEmail] + ];
StrSql = StrSql + Order By serial_no;
DataSet rs =(DataSet)MethodClass.ConnectionToQuery(StrSql);

if (rs.Tables [ 0 ]。Rows.Count > 0
{
for var i = 0 ; i < ; rs.Tables [ 0 ]。Rows.Count; i ++)
{

foreach (MenuItem childItem in item.ChildItems)
{
if (childItem.Text == rs.Tables [ 0 ]。行[i] [ Optionname]。ToString())
{
childItem.Enabled = tr UE ;
}
}
}
}
}
}
}

}


i want to disable or enable my menu bar for users from database,i have done for parent menu items,but i also want to disable or enable the child menu items,here is my code

StrSql = "Select serial_no,optionName,MenuID from [User_" + Session["UserEmail"] + "]";
                    StrSql = StrSql + " Order By serial_no";
                    DataSet rs = (DataSet)MethodClass.ConnectionToQuery(StrSql);
                    if (rs.Tables[0].Rows.Count > 0)
                    {
                        for (i = 0; i < MnuUserManagement.Items.Count; i++)
                        {
                            StrOpt = MnuUserManagement.Items[i].Text.ToString();
                            if (StrOpt != "-" || StrOpt == "")
                            {
                                for (j = 0; j < rs.Tables[0].Rows.Count ; j++)
                                {
                                    if (StrOpt == rs.Tables[0].Rows[j]["optionName"].ToString())
                                    {
                                        MnuUserManagement.Items[i].Enabled = true;
                                    }
                                }
                            }
                        }
                    }

解决方案

Store data from datatable in a list
Use List Menu i.e. HTML Menu
use if else condition in aspx page to hide the menu that user does not has the rights


i have solved it my self, but thanks to all of you guys, solution is:

StrSql = "Select serial_no,optionName,MenuID from [User_" + Session["UserEmail"] + "]";
              StrSql = StrSql + " Order By serial_no";
              DataSet rsmenu = (DataSet)MethodClass.ConnectionToQuery(StrSql);
              if (rsmenu.Tables[0].Rows.Count > 0)
              {

                  for (var i = 0; i < rsmenu.Tables[0].Rows.Count; i++)
                  {
                      foreach (MenuItem item in MnuUserManagement.Items)
                      {
           if (item.Text == rsmenu.Tables[0].Rows[i]["optionName"].ToString())
                          {
                              item.Enabled = true;
//Here i start a new dataset for child menu item
StrSql = "Select serial_no,optionName,MenuID from [User_" + Session["UserEmail"]+ "]";
            StrSql = StrSql + " Order By serial_no";
            DataSet rs = (DataSet)MethodClass.ConnectionToQuery(StrSql);

            if (rs.Tables[0].Rows.Count > 0)
            {
                for (var i = 0; i < rs.Tables[0].Rows.Count; i++)
                {
                    
                    foreach (MenuItem childItem in item.ChildItems)
                    {
              if (childItem.Text == rs.Tables[0].Rows[i]["Optionname"].ToString())
                        {
                            childItem.Enabled = true;
                        }
                    }
                }
            }
                          }
                      }
                  }

              }


这篇关于从数据库以编程方式禁用或启用菜单项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆