⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fjsyhwhgj.cs

📁 基于C/S的医疗卫生管理系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("创建应用信息分类发生异常:" + ex.Message);
            }
            finally
            {
                if (dsYyXx != null)
                    dsYyXx.Dispose();
                tvwYyXx.EndUpdate();
            }
        }
        #endregion

        #region TabControl的选择事件
        private void TabControlJsQx_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (m_TabControlSelected == true)
            {
                //创建应用信息分类
                CreateYyXx();
                m_TabControlSelected = false;
            }
        }
        #endregion

        #region treeview的选择事件
        private void tvwYyXx_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
            string yycdId = e.Node.Tag.ToString();
            //初始化应用菜单分类
            TreeNode rootNode = new TreeNode();
            try
            {
                m_YyCdXz = false;
                InitJsCd(yycdId, m_JsId);
                tvwYyCd.BeginUpdate();
                tvwYyCd.Nodes.Clear();
                tvwYyCd.CheckBoxes = true;
                this.CreateYyCd(rootNode, yycdId);
            }
            catch (Exception ex)
            {
                MessageBox.Show("初始化应用菜单分类发生异常:" + ex.Message);
            }
            finally
            {
                tvwYyCd.EndUpdate();
                m_YyCdXz = true;
            }
        }
        #endregion

        #region 初始化应用菜单
        private void InitYyCd()
        {
            try
            {
                DbProxyClient proxy = new DbProxyClient();
                m_DsYyCd = new QDataStore();
                //数据源
                m_DsYyCd.LibraryList = PBL.GyPbl;
                m_DsYyCd.DataWindowObject = GyDataObjects.d_Gy_JsWh_YyCd;
                proxy.Clear();
                proxy.Retrieve(m_DsYyCd);
                //排序
                m_DsYyCd.SetSort("PXXH");
                m_DsYyCd.Sort();
            }
            catch (Exception ex)
            {
                MessageBox.Show("初始化应用菜单发生异常:" + ex.Message);
            }
        }
        #endregion

        #region 关闭窗口事件
        private void FJsYhWhGj_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (m_DsYyCd != null)
                m_DsYyCd.Dispose();
            if (m_DsJsCd != null)
                m_DsJsCd.Dispose();
        }
        #endregion

        #region 创建应用菜单分类
        private void CreateYyCd(TreeNode ParentNode, string yycdId)
        {
            string cdId = "";
            string cdWz = "";
            int findRow = 0;
            TreeNode node;
            int rowCount = m_DsYyCd.RowCount;
            if (ParentNode.Text == "")
            {
                findRow = m_DsYyCd.FindRow("YYID ='" + yycdId + "' and SJCDID = '0'", 1, rowCount);
            }
            else
            {
                findRow = m_DsYyCd.FindRow("SJCDID ='" + yycdId + "'", 1, rowCount);
            }

            while (findRow > 0)
            {
                cdId = m_DsYyCd.GetItemString(findRow, "CDID");
                cdWz = m_DsYyCd.GetItemString(findRow, "CDWZ");
                if (ParentNode.Text == "")
                {
                    //增加节点
                    TreeNode rootNode = tvwYyCd.Nodes.Add(cdId, cdWz);
                    rootNode.ImageKey = QTreeView.ImageKeyEnum.Level1_Close.ToString();
                    rootNode.SelectedImageKey = QTreeView.ImageKeyEnum.Level1_Open.ToString();
                    rootNode.Tag = cdId;
                    CheckedJsCd(rootNode, cdId);
                    CreateYyCd(rootNode, cdId);
                    rootNode.Expand();
                }
                else
                {
                    //增加节点
                    node = ParentNode.Nodes.Add(cdId, cdWz);
                    if (node.Level == 1)
                    {
                        node.ImageKey = QTreeView.ImageKeyEnum.Level2_Close.ToString();
                        node.SelectedImageKey = QTreeView.ImageKeyEnum.Level2_Open.ToString();
                    }
                    else
                    {
                        node.ImageKey = QTreeView.ImageKeyEnum.Level3_Close.ToString();
                        node.SelectedImageKey = QTreeView.ImageKeyEnum.Level3_Open.ToString();
                    }
                    node.Tag = cdId;
                    CheckedJsCd(node, cdId);
                    CreateYyCd(node, cdId);
                    node.Expand();
                }
                if (findRow >= rowCount)
                    break;

                //继续查找
                if (ParentNode.Text == "")
                {
                    findRow = m_DsYyCd.FindRow("YYID ='" + yycdId + "' and SJCDID = '0'", findRow + 1, rowCount);
                }
                else
                {
                    findRow = m_DsYyCd.FindRow("SJCDID ='" + yycdId + "'", findRow + 1, rowCount);
                }
            }
        }
        #endregion

        #region 初始化角色所拥有菜单列表
        private void InitJsCd(string yyid, string jsid)
        {
            try
            {
                if (m_DsJsCd != null)
                    m_DsJsCd.Dispose();
                DbProxyClient proxy = new DbProxyClient();
                m_DsJsCd = new QDataStore();
                //数据源
                m_DsJsCd.LibraryList = PBL.GyPbl;
                m_DsJsCd.DataWindowObject = GyDataObjects.d_Gy_JsWh_JsCd;
                proxy.Clear();
                proxy.AddRetrieveParam(":p_jsid", jsid);
                proxy.AddRetrieveParam(":p_yyid", yyid);
                proxy.Retrieve(m_DsJsCd);
                //排序
                m_DsJsCd.SetSort("cdId");
                m_DsJsCd.Sort();
            }
            catch (Exception ex)
            {
                MessageBox.Show("初始化应用菜单发生异常:" + ex.Message);
            }
        }
        #endregion

        #region 判断是否要在treeview的checkbox上打勾
        private void CheckedJsCd(TreeNode node, string cdId)
        {
            //查找该用户是否拥有些菜单权限(有则打勾)
            if (m_DsJsCd.FindRow("cdId = '" + cdId + "'", 1, m_DsJsCd.RowCount) > 0)
            {
                node.Checked = true;
            }
            else
            {
                node.Checked = false;
            }
        }
        #endregion

        #region treeview中checkbox的选择事件
        private void tvwYyCd_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
            if (m_YyCdXz == true)
            {
                BTsave.Enabled = true;
            }
            //子节点选中后自动将其父节点选中
            selectParentNode(e.Node);
            //父节点取消选择后自动将其子节点取消选择
            foreach (TreeNode node in e.Node.Nodes)
            {
                if (!e.Node.Checked)
                    node.Checked = e.Node.Checked;
            }
        }
        #endregion

        #region 角色菜单的数据更新
        private void UpdateJsCd()
        {
            foreach(TreeNode node in tvwYyCd.Nodes)
            {
                getTreeNode(node);
            }

            try
            {
                DbProxyClient proxy = App.DbProxy;
                proxy.Clear();
                proxy.AddDataWindow(this.m_DsJsQx);
                proxy.Update();
                BTsave.Enabled = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show("角色菜单数据更新时发生异常:" + ex.Message, MsgTitle.Error);
            }
        }
        #endregion

        #region 检查此菜单在此角色是否已存在
        private bool IsExist(string cdId, ref int findRow)
        {
            int rowCount = m_DsJsQx.RowCount;
            findRow = m_DsJsQx.FindRow("CDID ='" + cdId + "' and JSID='" + m_JsId + "'", 1, rowCount);
            if (findRow > 0)
                return true;
            else
                return false;

        }
        #endregion

        #region 初始化角色权限
        private void InitJsQx()
        {
            try
            {
                if (m_DsJsQx != null)
                    m_DsJsQx.Dispose();
                DbProxyClient proxy = new DbProxyClient();
                m_DsJsQx = new QDataStore();
                //数据源
                m_DsJsQx.LibraryList = PBL.GyPbl;
                m_DsJsQx.DataWindowObject = GyDataObjects.d_Gy_JsWh_JsQx;
                proxy.Clear();
                proxy.Retrieve(m_DsJsQx);
            }
            catch (Exception ex)
            {
                MessageBox.Show("初始化角色权限发生异常:" + ex.Message);
            }
        }
        #endregion

        #region 遍历树菜单
        private void getTreeNode(TreeNode node)
        {
            string cdId = "";
            int rowNumber = 0;

            cdId = node.Tag.ToString();
            bool isExist;
            try
            {
                isExist = IsExist(cdId, ref rowNumber);
            }
            catch(Exception ex)
            {
                MessageBox.Show("检查此菜单在此角色是否已存在时出现异常" + ex.Message);
                return;
            }

            if (node.Checked)
            {
                //检查此菜单在此角色是否已存在
                if (!isExist)
                {
                    rowNumber = m_DsJsQx.InsertRow(0);
                    m_DsJsQx.SetItemString(rowNumber, "JSID", m_JsId);
                    m_DsJsQx.SetItemString(rowNumber, "CDID", cdId);
                }
            }
            else
            {
                //检查此菜单在此角色是否已存在
                if (isExist)
                {
                    m_DsJsQx.DeleteRow(rowNumber);
                }
            }

            //处理子节点
            if (node.Nodes.Count>0)
            {
                foreach (TreeNode nn in node.Nodes)
                {
                    getTreeNode(nn);
                }
            }
        }
        #endregion

        #region 子节点选中后自动将其父节点选中
        private void selectParentNode(TreeNode node)
        {
            TreeNode pNode;
            if (node.Parent is TreeNode)
            {
                pNode = node.Parent;
                if (node.Checked)
                    pNode.Checked = true;
                selectParentNode(pNode);
            }
        }
        #endregion
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -