2022.12.15 TIL

SaGo_MunGcci·2022년 12월 14일
0

C#

목록 보기
13/27

해당 컬럼 전체 이벤트 발생해주는 코드

cd405에서 3개의 컬럼을 제어하기때문에 3개의 컬럼의 필드네임을 가져옴


            grvAllg.Columns.ColumnByFieldName("hstkVrsnCd").OptionsColumn.AllowEdit = false;
            grvAllg.Columns.ColumnByFieldName("hstkVrsnCd").OptionsColumn.ReadOnly = true;

            grvAllg.Columns.ColumnByFieldName("hstkTypCd").OptionsColumn.AllowEdit = false;
            grvAllg.Columns.ColumnByFieldName("hstkTypCd").OptionsColumn.ReadOnly = true;

            grvAllg.Columns.ColumnByFieldName("hstkInqryCd").OptionsColumn.AllowEdit = false;
            grvAllg.Columns.ColumnByFieldName("hstkInqryCd").OptionsColumn.ReadOnly = true;

그런데 문제는 위와 같이 코드를 작성하면 행추가시 3컬럼에 해당하는 모든 row가 수정가능하게 되는 일이 발생한다 나는 행추가되는 로우만 수정해주고 싶은데 말이다.

과장님께서 해결해주신 코드


using DevExpress.XtraGrid.Views.Grid; --> 이거 임포트 반드시 해주어야 한다.


 public VHMGZCD405S()
        {
            InitializeComponent();

            ActionBtnSetting();

            InitComboBox();

            grvAllg.ShowingEditor += GrvAllg_ShowingEditor;
        }

        private void GrvAllg_ShowingEditor(object sender, CancelEventArgs e)
        {
            var view = sender as GridView;
            string fieldName = view.FocusedColumn.FieldName;

            // 추가된 행은 입력가능
            if (view.GetFocusedDataRow().RowState == DataRowState.Added)
            {
                
                e.Cancel = false;
            }

            if (view.GetFocusedDataRow().RowState == DataRowState.Detached)
            {

                e.Cancel = false;
            }

            else //추가된행이 아닐때 기존행.
            {

                // 식별코드인 경우, 수정불가
                if (fieldName == "hstkVrsnCd")
                {
                    e.Cancel = true;
                }

                else if (fieldName == "hstkTypCd")
                {
                    e.Cancel = true;
                }

                else if (fieldName == "hstkInqryCd")
                {
                    e.Cancel = true;
                }

                //else
                //{
                //    e.Cancel = false;
                //}

                
            }

        }

그리드뷰의 이벤트중 ShowingEditor를 사용해서 해결할 수 있었다.

해당 그리드에 행추가(added, Detached)시 추가되는 row와 원하는 컬럼을 설정해서 이벤트를 제어할 수 있었다.

profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글