/// <summary>
        /// 그리드 Row 추가 버튼 클릭 이벤트
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnRowAdd_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            try
            {
                var newItme = new RoleMgnt
                {
                    ROLE_CD      = string.Empty
                    , ROLE_NM    = string.Empty
                    , USE_YN     = "Y"
                    , IsSelected = true
                    , IsNew      = true
                };

                this.RoleMgntList.Add(newItme);
                this.gridLeft_RoleList.Focus();
                this.gridLeft_RoleList.CurrentColumn         = this.gridLeft_RoleList.Columns.First();
                this.gridLeft_RoleList.View.FocusedRowHandle = this.RoleMgntList.Count - 1;

                this.RoleMgntList[this.RoleMgntList.Count - 1].BackgroundBrush     = new SolidColorBrush(Colors.White);
                this.RoleMgntList[this.RoleMgntList.Count - 1].BaseBackgroundBrush = new SolidColorBrush(Colors.White);

                this.BaseClass.SetGridRowAddFocuse(this.gridLeft_RoleList, this.RoleMgntList.Count - 1);
            }
            catch (Exception err)
            {
                this.BaseClass.Error(err);
            }
        }
        /// <summary>
        /// 권한 마스터 수정 데이터 저장
        /// </summary>
        /// <param name="_da">데이터베이스 엑세스 객체</param>
        /// <param name="_item">수정 저장 대상 데이터</param>
        /// <returns></returns>
        private async Task <bool> UpdateSP_ROLE_HRD_UPD(BaseDataAccess _da, RoleMgnt _item)
        {
            bool isRtnValue = true;

            #region + 파라메터 변수 선언 및 값 할당
            DataTable dtRtnValue       = null;
            var       strProcedureName = "PK_C1005.SP_ROLE_HDR_UPD";
            Dictionary <string, object> dicInputParam = new Dictionary <string, object>();
            string[] arrOutputParam = { "O_RSLT" };

            var strCenterCD = this.BaseClass.CenterCD;                              // 센터코드
            var strRoleCD   = _item.ROLE_CD;                                        // 권한코드
            var strRoleNM   = _item.ROLE_NM;                                        // 권한명
            var strUseYN    = _item.USE_YN_CHECKED == true ? "Y" : "N";             // 사용여부
            var strUserID   = this.BaseClass.UserID;                                // 사용자 ID
            #endregion

            #region + Input 파라메터
            dicInputParam.Add("P_CNTR_CD", strCenterCD);                        // 센터코드
            dicInputParam.Add("P_ROLE_CD", strRoleCD);                          // 권한코드
            dicInputParam.Add("P_ROLE_NM", strRoleNM);                          // 권한명
            dicInputParam.Add("P_USE_YN", strUseYN);                            // 사용여부
            dicInputParam.Add("P_USER_ID", strUserID);                          // 사용자 ID
            #endregion

            #region + 데이터 조회
            await System.Threading.Tasks.Task.Run(() =>
            {
                dtRtnValue = _da.GetSpDataTable(strProcedureName, dicInputParam, arrOutputParam);
            }).ConfigureAwait(true);

            #endregion

            if (dtRtnValue != null)
            {
                if (dtRtnValue.Rows.Count > 0)
                {
                    if (dtRtnValue.Rows[0]["CODE"].ToString().Equals("0") == false)
                    {
                        var strMessage = dtRtnValue.Rows[0]["MSG"].ToString();
                        this.BaseClass.MsgError(strMessage, BaseEnumClass.CodeMessage.MESSAGE);
                        isRtnValue = false;
                    }
                }
                else
                {
                    // ERR_SAVE - 저장 중 오류가 발생했습니다.
                    this.BaseClass.MsgError("ERR_SAVE");
                    isRtnValue = false;
                }
            }

            return(isRtnValue);
        }
        /// <summary>
        /// 권한 마스터 신규 데이터 저장
        /// </summary>
        /// <param name="_da">데이터베이스 엑세스 객체</param>
        /// <param name="_item">신규 저장 대상 데이터</param>
        /// <returns></returns>
        private async Task <bool> SaveSP_ROLE_HDR_INS(BaseDataAccess _da, RoleMgnt _item)
        {
            bool isRtnValue = true;

            #region + 파라메터 변수 선언 및 값 할당
            DataTable dtRtnValue       = null;
            var       strProcedureName = "UI_ROLE_MST_INS";
            Dictionary <string, object> dicInputParam = new Dictionary <string, object>();
            Dictionary <object, BaseEnumClass.MSSqlOutputDataType> dicOutPutParam = new Dictionary <object, BaseEnumClass.MSSqlOutputDataType>();
            Dictionary <object, object> dicRtnValue = new Dictionary <object, object>();

            var strRoleCD  = _item.ROLE_CD;                                         // 권한코드
            var strRoleNM  = _item.ROLE_NM;                                         // 권한명
            var strUseYN   = _item.USE_YN_CHECKED == true ? "Y" : "N";              // 사용여부
            var strUserID  = this.BaseClass.UserID;                                 // 사용자 ID
            var strInsType = _item.IsNew == true ? "I" : "U";                       // Ins Type
            #endregion

            #region + Input 파라메터
            dicInputParam.Add("ROLE_CD", strRoleCD);          // 권한코드
            dicInputParam.Add("ROLE_NM", strRoleNM);          // 권한명
            dicInputParam.Add("USE_YN", strUseYN);            // 사용여부
            dicInputParam.Add("L_USER_ID", strUserID);        // 사용자 ID
            dicInputParam.Add("INS_TYPE", strInsType);        // Ins Type
            #endregion

            #region + Output 파라메터
            dicOutPutParam.Add("RTN_VAL", BaseEnumClass.MSSqlOutputDataType.INT32);
            dicOutPutParam.Add("RTN_MSG", BaseEnumClass.MSSqlOutputDataType.VARCHAR);
            #endregion

            #region + 데이터 조회
            await System.Threading.Tasks.Task.Run(() =>
            {
                dtRtnValue = _da.GetSpDataTable(strProcedureName, dicInputParam, dicOutPutParam, ref dicRtnValue);
            }).ConfigureAwait(true);

            #endregion

            if (dicRtnValue["RTN_VAL"].ToString().Equals("0") == false)
            {
                var strMessage = dicRtnValue["RTN_MSG"].ToString();
                this.BaseClass.MsgError(strMessage, BaseEnumClass.CodeMessage.MESSAGE);
                isRtnValue = false;
            }

            return(isRtnValue);
        }
        private static void View_ShowingEditor(object sender, ShowingEditorEventArgs e)
        {
            try
            {
                if (g_IsAuthAllYN == false)
                {
                    e.Cancel = true;
                    return;
                }

                TableView tv         = sender as TableView;
                RoleMgnt  dataMember = tv.Grid.CurrentItem as RoleMgnt;
                if (dataMember == null)
                {
                    return;
                }

                switch (e.Column.FieldName)
                {
                case "ROLE_CD":
                    if (dataMember.IsNew == false)
                    {
                        if (dataMember.IsSelected == true)
                        {
                            dataMember.IsSelected = false;
                        }
                        e.Cancel = true;
                    }
                    break;

                case "USE_YN":
                    if (dataMember.IsNew == true)
                    {
                        if (dataMember.IsSelected == true)
                        {
                            dataMember.IsSelected = false;
                        }
                        e.Cancel = true;
                    }
                    break;
                }
            }
            catch { throw; }
        }