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

📄 explorerform.cs

📁 通用权限管理平台
💻 CS
📖 第 1 页 / 共 4 页
字号:
                // 在拖拽的时候,显示鼠标图标
                e.UseDefaultCursors = false;
                this.trv_Resources.Cursor = Cursors.Default;
            }
            else e.UseDefaultCursors = true;
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            // 获得鼠标所在位置的节点
            Point pt = PointToClient(Control.MousePosition);
            TreeNode node = this.trv_Resources.GetNodeAt(pt);

            if (node == null) return;

            // 如果鼠标靠近上面,就向上滚动
            if (pt.Y < 30)
            {
                // 选择上面一个节点
                if (trv_Resources.TopNode.PrevNode != null)
                {
                    node = trv_Resources.TopNode.PrevNode;

                    // 隐藏拖拽的图片
                    DragHelper.ImageList_DragShowNolock(false);
                    // 拖拽并且刷新
                    node.EnsureVisible();
                    this.trv_Resources.Refresh();
                    // 显示图片
                    DragHelper.ImageList_DragShowNolock(true);

                }
            }
            // 如果鼠标靠近下面,就向下滚动
            else if (pt.Y > this.trv_Resources.Size.Height - 30)
            {
                if (node.NextVisibleNode != null)
                {
                    node = node.NextVisibleNode;

                    DragHelper.ImageList_DragShowNolock(false);
                    node.EnsureVisible();
                    this.trv_Resources.Refresh();
                    DragHelper.ImageList_DragShowNolock(true);
                }
            }
        }

        void timerExpand_Tick(object sender, EventArgs e)
        {
            if (trv_Resources.SelectedNode != null)
                trv_Resources.SelectedNode.Expand();
        }

        #endregion

        #region DataGridView错误提示

        private void dg_Resources_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            MessageBox.Show("您插入的数据有误,详细信息如下:\n" + e.Exception.Message, "插入数据错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void dg_Operate_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            MessageBox.Show("您插入的数据有误,详细信息如下:\n" + e.Exception.Message, "插入数据错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

        }
        #endregion

        #region Resource资源组的DataGridView事件

        /// <summary>
        /// 自动把中文名复职到英文名单元格内
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dg_Resources_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            dg_Resources_CellEndEdit(sender, e);
        }

        private void dg_Resources_CellLeave(object sender, DataGridViewCellEventArgs e)
        {
            dg_Resources_CellEndEdit(sender, e);

        }
        /// <summary>
        /// 单元格快捷键
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dg_Resources_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            //Ctrl+S,保存当前记录
            if (e.KeyData == (Keys.Control | Keys.S))
                btn_ResSave_Click(sender, e);
        }

        private void dg_Resources_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            string columnCNName = "resourcesCNNameDataGridViewTextBoxColumn";
            string columnName = "resourcesNameDataGridViewTextBoxColumn";
            string copyValue;

            if ((e.RowIndex > -1) && (e.ColumnIndex > -1) && (dg_Resources.Rows[e.RowIndex].Cells[columnCNName].Value != null))
            {
                copyValue = dg_Resources.Rows[e.RowIndex].Cells[columnCNName].Value.ToString().Trim();
                if ((dg_Resources.Columns[e.ColumnIndex].Name == columnCNName) && (dg_Resources.Rows[e.RowIndex].Cells[columnName].Value.ToString() == string.Empty))
                {
                    dg_Resources.Rows[e.RowIndex].Cells[columnName].Value = copyValue;
                }
            }
        }

        /// <summary>
        /// 用户删除行的时候,要删除与其相关的记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dg_Resources_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            if ((!e.Row.IsNewRow) && (this.wmfPrivilegeBindingSource.Count != 0))
            {
                if (MessageBox.Show("请确认是否删除与[" + e.Row.Cells["resourcesCNNameDataGridViewTextBoxColumn"].Value.ToString() + "]相关的记录?", "删除相关记录", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    DeletePrivilegeByResourceId(new Guid(e.Row.Cells["resourcesIdDataGridViewTextBoxColumn"].Value.ToString()));
                }
                else
                {
                    e.Cancel = true;
                }

            }
        }

        /// <summary>
        /// 用户编辑行的时候,删除相关记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dg_Resources_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            this.wmfPrivilegeBindingSource.Filter = "[ResourcesId]='" + dg_Resources.Rows[e.RowIndex].Cells["resourcesIdDataGridViewTextBoxColumn"].Value.ToString() + "'";

            if ((!dg_Resources.Rows[e.RowIndex].IsNewRow) && (this.wmfPrivilegeBindingSource.Count != 0) && dg_Resources.Columns[e.ColumnIndex].Name != "descriptionDataGridViewTextBoxColumn" && dg_Resources.Columns[e.ColumnIndex].Name != "ResourcesOrder" && dg_Resources.Columns[e.ColumnIndex].Name != "ResourceGroupId")
            {
                if (MessageBox.Show("在编辑关键信息以前,请确认是否删除与[" + dg_Resources["resourcesCNNameDataGridViewTextBoxColumn", e.RowIndex].Value.ToString() + "]相关的记录?", "编辑前删除相关记录", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    DeletePrivilegeByResourceId(new Guid(dg_Resources["resourcesIdDataGridViewTextBoxColumn", e.RowIndex].Value.ToString()));
                }
                else
                {
                    e.Cancel = true;
                }

            }
        }

        /// <summary>
        /// 给列表添加自动生成GUID的功能
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dg_Resources_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (dg_Resources.Rows[e.RowIndex].IsNewRow)
            {
                dg_Resources.Rows[e.RowIndex].Cells["resourcesIdDataGridViewTextBoxColumn"].Value = Guid.NewGuid().ToString();
                dg_Resources.Rows[e.RowIndex].Cells["ResourceGroupId"].Value = trv_Resources.SelectedNode.Name;
                dg_Resources.Rows[e.RowIndex].Cells["ResourcesOrder"].Value = this.dataResources.wmf_Resources.Rows.Count + 1;
            }

            if (dg_Resources.Rows[e.RowIndex].Cells["resourcesIdDataGridViewTextBoxColumn"].Value != null)
            {

                // 过滤
                this.wmfPrivilegeBindingSource.Filter = "[ResourcesId]='" + dg_Resources.Rows[e.RowIndex].Cells["resourcesIdDataGridViewTextBoxColumn"].Value.ToString() + "'";
                lbl_TableName.Text = "与资源[" + dg_Resources.Rows[e.RowIndex].Cells["resourcesCNNameDataGridViewTextBoxColumn"].Value.ToString() + "]相关的权限记录,共 " + wmfPrivilegeBindingSource.Count.ToString() + " 条记录";
            }

        }

        /// <summary>
        /// 根据资源删除相关的权限
        /// </summary>
        /// <param name="operationId"></param>
        private void DeletePrivilegeByResourceId(Guid resourceID)
        {
            //检验这个权限是否被使用,如果有被使用,则删除
            foreach (DataResources.wmf_PrivilegeRow row in wmf_PrivilegeTableAdapter.GetDataByResourceId(resourceID))
            {
                //删除PrivilegeInRoles
                new PrivilegeInRolesBLL().DeletePrivilegeInRoles(row.ResourcesId);

            }
            int i = wmf_PrivilegeTableAdapter.DeleteByResourceId(resourceID);
            //重新加载数据
            this.dataResources.wmf_Privilege.Clear();
            wmf_PrivilegeTableAdapter.Fill(dataResources.wmf_Privilege);
            SysLog("成功删除了" + i.ToString() + "条与resourceID[" + resourceID + "]相关的记录", true);
        }

        #endregion

        #region Operate操作类型的DataGridView事件
        private void dg_Operate_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (dg_Operate["operationIdDataGridViewTextBoxColumn", e.RowIndex].Value != null)
            {
                // 过滤
                this.wmfPrivilegeBindingSource.Filter = "[OperationID]=" + dg_Operate["operationIdDataGridViewTextBoxColumn", e.RowIndex].Value.ToString();
                lbl_TableName.Text = "与[" + dg_Operate["OperationCNName", e.RowIndex].Value.ToString() + "]操作(Operation)相关的权限记录共 " + wmfPrivilegeBindingSource.Count.ToString() + " 条记录";

            }

        }

        private void dg_Operate_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            if ((!dg_Operate.Rows[e.RowIndex].IsNewRow) && (this.wmfPrivilegeBindingSource.Count != 0) && dg_Operate.Columns[e.ColumnIndex].Name != "descriptionDataGridViewTextBoxColumn2")
            {
                if (MessageBox.Show("在编辑关键信息以前,请确认是否删除与[" + dg_Operate["OperationCNName", e.RowIndex].Value.ToString() + "]相关的记录?", "编辑前删除相关记录", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    DeletePrivilegeByOperationId((int)dg_Operate["operationIdDataGridViewTextBoxColumn", e.RowIndex].Value);
                }
                else
                {
                    e.Cancel = true;
                }

            }
        }

        /// <summary>
        /// 根据操作类型删除相关的权限
        /// </summary>
        /// <param name="operationId"></param>
        private void DeletePrivilegeByOperationId(int operationId)
        {
            //检验这个权限是否被使用,如果有被使用,则删除
            foreach (DataResources.wmf_PrivilegeRow row in wmf_PrivilegeTableAdapter.GetDataByOperationID(operationId))
            {
                //删除PrivilegeInRoles
                new PrivilegeInRolesBLL().DeletePrivilegeInRoles(row.PrivilegeId);

            }
            int i = wmf_PrivilegeTableAdapter.DeleteByOperationId(operationId);
            //重新加载数据
            this.dataResources.wmf_Privilege.Clear();
            wmf_PrivilegeTableAdapter.Fill(dataResources.wmf_Privilege);
            SysLog("成功删除了" + i.ToString() + "条与OperationID[" + operationId + "]相关的记录", true);
        }



        /// <summary>
        /// 删除行,要删除相关记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dg_Operate_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            if ((!e.Row.IsNewRow) && (this.wmfPrivilegeBindingSource.Count != 0))
            {
                if (MessageBox.Show("在删除操作之前,请确认是否删除与此相关的信息", "删除相关记录", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    DeletePrivilegeByOperationId((int)e.Row.Cells["operationIdDataGridViewTextBoxColumn"].Value);
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }



        #endregion

        #region 清理冗余数据
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripClean_Click(object sender, EventArgs e)
        {
            try
            {
                SysLog("开始清理在Privilege表中重复的数据", true);
                int i = this.wmf_PrivilegeTableAdapter.DeleteRepeatData();
                SysLog("清理在Privilege表中重复的数据成功!", true);

                MessageBox.Show("清理冗余数据成功!", "清理冗余数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                SysLog("清理冗余数据数据失败,原因是:" + ex.Message, true);
                MessageBox.Show("清理冗余数据失败,原因是:" + ex.Message, "清理冗余数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }



        }
        #endregion


    }
}

⌨️ 快捷键说明

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