动态菜单(权限不同,菜单不同)

来源:互联网 发布:json格式保存到数据库 编辑:程序博客网 时间:2024/05/24 05:29

主界面:

TreeFunction myTreeF = new TreeFunction();
myStr2 = "SELECT StationID,StationMenu FROM RolePurviewInfo WHERE StationID = '" + GlobeVariable.StationID + "' ORDER BY StationID";
myDs1 = myConnectManager.Data_Fill(myStr2, "CD");
myTreeF.MenuVisible(menuStrip1.Items, myDs1);

生成页面:

1)在Page_Load事件中加入:

myfMain = new fMain();
myTreeFunction = new TreeFunction();
myTreeFunction.TreeRoot(ref treeView1, myfMain.myMenuStrip);

2)在保存事件中加入:

myStr2 = "";
fhz = myConnectManager.ExecuteSQL(myStr2);
if (myTreeFunction.TreeSaveRight(StationBM, StationMC, treeView1.Nodes, myConnectManager) == 1)
{
    MessageBox.Show("数据保存成功", "提示信息");
}

类中的方法:

private int j, z;

#region TreeView添加父节点,方法名:TreeRoot(ref TreeView myT, MenuStrip myMenu)
public void TreeRoot(ref TreeView myT, MenuStrip myMenu)
{
    foreach (ToolStripMenuItem myMI in myMenu.Items)
    {
        TreeNode myTreeN = new TreeNode();
        myTreeN.Text = myMI.Text;
        TreeNod(myMI, myTreeN, false);
        myT.Nodes.Add(myTreeN);
    }
    myT.ShowRootLines = true;
    myT.SelectedNode = myT.Nodes[0];
    myT.Focus();
}
#endregion

#region TreeView添加子节点,方法名:TreeNod(ToolStripMenuItem m, TreeNode asTN, bool asbl)
public TreeNode TreeNod(ToolStripMenuItem m, TreeNode asTN, bool asbl)
{
    TreeNode TreeN1 = new TreeNode();      //定义一个新的节点
    if (asbl)
    {
        TreeN1.Text = m.Text;      //新节点的名称为菜单项的名称
        asTN.Nodes.Add(TreeN1);      //添加名称为菜单项的新节点
    }
    else
    {
        TreeN1 = asTN;      //新节点的名称为默认节点名称
    }

    for (int i = 0; i < m.DropDownItems.Count; i++)
    {
        if (m.DropDownItems[i] is ToolStripMenuItem)
        {
            TreeNod((ToolStripMenuItem)m.DropDownItems[i], TreeN1, true);
        }
        else
        {
            if (m.DropDownItems[i] is ToolStripSeparator)
            {
                asTN.Nodes.Add("-" + j.ToString() + i.ToString());
            }
        }
    }
    if (m.DropDownItems.Count > 0)
    {
        j += 1;
    }
    return TreeN1;      //返回新节点
}
#endregion

#region 在TreeView中显示不同权限用户的菜单项,方法名:TreeSetRightByUserGroup(string UserGroupbm, TreeNodeCollection myTree, ConnectManager myConM)
public void TreeSetRightByUserGroup(string UserGroupbm, TreeNodeCollection myTree, ConnectManager myConM)
{
    DataSet myDs;
    foreach (TreeNode tn in myTree)
    {
        string lsSql = "select * from RolePurviewInfo where StationID='" + UserGroupbm + "' and StationMenu='" + tn.Text + "'";
        myDs = myConM.Data_Fill(lsSql, "RolePurviewInfo");
        if (myDs == null)
        {
            return;
        }
        if (myDs.Tables["RolePurviewInfo"].Rows.Count == 1)
        {
            tn.Checked = true;
        }
        else
        {
            tn.Checked = false;
        }
        //myDs.Clear();
        myDs.Tables["RolePurviewInfo"].Rows.Clear();
        if (tn.Nodes.Count != 0)
        {
            TreeSetRightByUserGroup(UserGroupbm, tn.Nodes, myConM);
        }
    }
}
#endregion

#region 保存不同权限用户的菜单项,方法名:TreeSaveRight(string UserGroupbm, string UserGroupmc, TreeNodeCollection myTree, ConnectManager myConM)
public int TreeSaveRight(string UserGroupbm, string UserGroupmc, TreeNodeCollection myTree, ConnectManager myConM)
{
    foreach (TreeNode tn in myTree)
    {
        if (tn.Checked == true)
        {
            string lsSql = "INSERT INTO RolePurviewInfo(StationID,StationName,StationMenu) VALUES('" + UserGroupbm + "','" + UserGroupmc + "','" + tn.Text + "')";
            try
            {
                myConM.ExecuteSQL(lsSql);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString(), "error");
                return 0;
            }
        }
        if (tn.Nodes.Count != 0)
        {
            TreeSaveRight(UserGroupbm, UserGroupmc, tn.Nodes, myConM);
        }
    }
    return 1;
}
#endregion

#region TreeView选择父节点,方法名:TreeSelectParent(TreeNode Tn, bool lsCheck)
public void TreeSelectParent(TreeNode Tn, bool lsCheck)
{
    if (Tn.Parent == null)

    {

        return;

    }
    switch (lsCheck)
    {
        case true:
            Tn.Parent.Checked = true;
            break;
        case false:
            Tn.Parent.Checked = false;
            break;
        default:
            break;
    }
}
#endregion

#region TreeView选择子节点,方法名:TreeSelectRight(TreeNodeCollection myTree, bool myIndex)
public void TreeSelectRight(TreeNodeCollection myTree, bool myIndex)
{
    foreach (TreeNode tn in myTree)
    {
        tn.Checked = myIndex;
    }
}
#endregion

#region 确定不同权限用户的菜单显示,方法名:MenuVisible(ToolStripItemCollection Mymenu, DataSet myDS)
public void MenuVisible(ToolStripItemCollection Mymenu, DataSet myDS)
{
    for (int i = 0; i < Mymenu.Count; i++)
    {
        if (Mymenu[i].GetType().ToString() == "System.Windows.Forms.ToolStripMenuItem")
        {
            ToolStripMenuItem t = (ToolStripMenuItem)Mymenu[i];
            myDS.Tables["CD"].DefaultView.RowFilter = "StationMenu='" + t.Text + "'";
            if (myDS.Tables["CD"].DefaultView.Count == 1)
            {
                t.Visible = true;
            }
            else
            {
                t.Visible = false;
            }
            if (t.DropDownItems.Count != 0)
            {
                MenuVisible(t.DropDownItems, myDS);
                z += 1;
            }
        }
        else
        {
            ToolStripSeparator t = (ToolStripSeparator)Mymenu[i];
            string Filter = "StationMenu='" + "-" + z.ToString() + i.ToString() + "'";
            myDS.Tables["CD"].DefaultView.RowFilter = Filter;
            if (myDS.Tables["CD"].DefaultView.Count == 1)
            {
                t.Visible = true;
            }
            else
            {
                t.Visible = false;
            }
        }
    }
}
#endregion

原创粉丝点击