您的位置:首页 > 移动开发 > Objective-C

动态创建菜单,menustrip,根据权限显示菜单,控制菜单可用,反射,给窗体传值,反射对象传值,public static Object CreateInstance ( Type type, pa

2014-03-18 08:56 671 查看
        public void LoadMenuRightsItem(MenuStrip msCurrentMenu, ListBox listBox)//, List<Rights> rightCollection)

        {

            string conStr = ConfigurationManager.ConnectionStrings["SQLSERVER"].ConnectionString;

            ToolStripMenuItem MenuItem = null;

            using (SqlConnection con = new SqlConnection(conStr))

            {

                string sql = "select sf.NodeID, sf.DisplayName,sf.FullFrmName,sf.NameSpaceName,sf.ParentNodeID,sf.EventName from UserInfo ui left outer join R_UserInfo_SysFun rus on ui.ID=rus.UserInfoID left outer join SysFun sf on rus.SysFunID=sf.NodeID where
ui.ID=1 union select sf.NodeID ,sf.DisplayName,sf.FullFrmName,sf.NameSpaceName,sf.ParentNodeID,sf.EventName from UserInfo ui left outer join User_Roles ur on ui.ID=ur.UserID left outer join Roles r on ur.RoleID=r.ID left outer join Roles_SysFun rs on r.ID=rs.RolesID
Right outer join SysFun sf on rs.SysFunID=sf.NodeID where ui.ID=1";

                using (SqlCommand cmd = new SqlCommand(sql, con))

                {

                    con.Open();

                    SqlDataReader reader = cmd.ExecuteReader();

                    while (reader.Read())

                    {

                        if (reader["ParentNodeID"].ToString() == "0")

                        {

                            ToolStripMenuItem mItem;

                            mItem = new ToolStripMenuItem(reader["DisplayName"].ToString());

                            msCurrentMenu.Items.Add(mItem);

                            SetSubMenu(mItem, reader["NodeID"].ToString());

                            //SetSubMenu((ToolStripMenuItem)msCurrentMenu.Items[reader["DisplayName"].ToString()], reader["NodeID"].ToString());

                        }

                    }

                }

            }

        }

        /// <summary>

        /// 创建子菜单

        /// </summary>

        /// <param name="mItem">要创建的子菜单的父项</param>

        /// <param name="mName>要创建的子菜单的父项名称</param>

        public void SetSubMenu(ToolStripMenuItem mItem, string mName)

        {

            try

            {

                string conStr = ConfigurationManager.ConnectionStrings["SQLSERVER"].ConnectionString;

                ToolStripMenuItem MenuItem = null;

                using (SqlConnection con = new SqlConnection(conStr))

                {

                    string sql = "select sf.NodeID, sf.DisplayName,sf.FullFrmName,sf.NameSpaceName,sf.ParentNodeID,sf.EventName from UserInfo ui left outer join R_UserInfo_SysFun rus on ui.ID=rus.UserInfoID left outer join SysFun sf on rus.SysFunID=sf.NodeID
where ui.ID=1 union select sf.NodeID ,sf.DisplayName,sf.FullFrmName,sf.NameSpaceName,sf.ParentNodeID,sf.EventName from UserInfo ui left outer join User_Roles ur on ui.ID=ur.UserID left outer join Roles r on ur.RoleID=r.ID left outer join Roles_SysFun rs on
r.ID=rs.RolesID Right outer join SysFun sf on rs.SysFunID=sf.NodeID where ui.ID=1";

                    using (SqlCommand cmd = new SqlCommand(sql, con))

                    {

                        con.Open();

                        SqlDataReader reader = cmd.ExecuteReader();

                        while (reader.Read())

                        {

                            if (reader["ParentNodeID"].ToString() == mName)

                            {

                                ToolStripMenuItem mSubItem;

                                EventHandler eh = GetEvent(reader["EventName"].ToString());

                                mSubItem = new ToolStripMenuItem(reader["DisplayName"].ToString(), null, eh); //

                                mItem.DropDownItems.Add(mSubItem);

                                // SetSubMenu((ToolStripMenuItem)mItem.DropDownItems[reader["DisplayName"].ToString()],reader["DisplayName"].ToString());

                            }

                        }

                    }

                }

            }

            catch (Exception e)

            {

                MessageBox.Show(e.ToString());

            }

        }

       

        public EventHandler GetEvent(string eventName)

        {

            EventHandler eh = null;

            switch (eventName.ToString())

            {

                case "DeptInfoClicked":

                    eh = new EventHandler(DeptInfoClicked);

                    break;

                default:

                    eh = null;

                    break;

            }

            return eh;

        }

        public void DeptInfoClicked(object sender, EventArgs e)

        {

            MessageBox.Show("DeptInfoClicked");

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐