개발(IT)/DevExpress(WinForm)

[GridView] 체크박스(CheckBox)로 사용시 SelectionChanged 처리

isony 2023. 10. 18. 21:16
반응형

1. 체크박스(CheckBox)로 사용시 SelectionChanged to MouseDown 변경처리

- 기존 GridView에 체크박스를 추가해서 행(Row)을 선택하는 기능을 사용할 경우 SelectionChanged 기능이 먹히질 않아 다른 방법을 찾다가 응용을 해 보았습니다.

<자세한 설명 링크>

https://isony.tistory.com/entry/GridView-%EC%B2%B4%ED%81%AC%EB%B0%95%EC%8A%A4CheckBox%EB%A1%9C-%ED%96%89Row-%EC%84%A0%ED%83%9D%ED%95%98%EA%B8%B0

 

[GridView] 체크박스(CheckBox)로 행(Row) 선택하기

GridView에서 조회를 한후 읽기전용에서 체크박스를 넣어 여러행 선택하기를 해보겠습니다. ( 항상 MultiSelect 옵션은 true로 변경해야 함 ) // DataGrid 초기화 dgViewMaster.OptionsSelection.MultiSelect = true; dgView

www.whodo.net

 

위 사항을 처리하고 행 선택시 SelectionChanged 기능이 먹히질 않아 찾아 보았는데 focusChanged를 사용하라고하는데 저는 먹히지 않았습니다.

고민하다 마우스 클릭(MouseDown(object sender, MouseEventArgs e)) 를 사용해서 해결되었습니다.

- 소스 (1) 부분을 참고해서 보시고 아래는 무시하셔도 됩니다.

- 아래 소스는 마우스 클릭시 상세내역을 그룹화하여 보여주시는 기능도 포함되어 있습니다.

 

private void dgViewMaster_MouseDown(object sender, MouseEventArgs e)
{
    // 1. 시작 --------------------------------- //
    GridHitInfo ghi = dgViewMaster.CalcHitInfo(e.Location);
    if (!ghi.InRow) { return; }

    messageSendShow("Current Row = " + ghi.RowHandle.ToString() + " / " + dgViewMaster.RowCount.ToString());

    // 선택한 Row의 데이터를 가져온다.
    DataRow row = dgViewMaster.GetDataRow(ghi.RowHandle);
    // 1. 끝 --------------------------------- //

    //Cursor = Cursors.WaitCursor;
    SplashScreenManager.ShowForm(typeof(waitScreenForm));

    string query = "select 문";
    object[] param = { 매개변수 };
    sqlDBHelper.Init();
    DataTable retData = sqlDBHelper.executeQuery(query, param);

    dgDetailData.DataSource = retData;
    if (dgDetailView.RowCount > 0)
    {
        // Grid View Font 굴림체, 9.75pt
        dgDetailView.ClearGrouping();
        dgDetailView.Appearance.HeaderPanel.Font = new System.Drawing.Font("굴림체", 9.75f);
        dgDetailView.Appearance.GroupPanel.Font = new System.Drawing.Font("굴림체", 9.75f);
        dgDetailView.Appearance.GroupRow.Font = new System.Drawing.Font("굴림체", 9.75f);
        dgDetailView.Appearance.Row.Font = new System.Drawing.Font("굴림체", 9.75f);
        dgDetailView.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center;

        // Header Title Name
        dgDetailView.Columns[0].Caption = "2차";
        dgDetailView.Columns[0].Width = 100;
        dgDetailView.Columns[1].Caption = "1차";
        dgDetailView.Columns[1].Width = 100;
        dgDetailView.Columns[2].Caption = "종류";
        dgDetailView.Columns[2].Width = 100;

        if (retData.Rows[0][0].ToString().Equals("*"))
        {
            dgDetailView.Columns[0].Visible = false;
            dgDetailView.Columns[0].GroupIndex = 0;
            dgDetailView.Columns[0].SortIndex = 0;
            dgDetailView.Columns[0].SortOrder = DevExpress.Data.ColumnSortOrder.Ascending;
        }
        else
        {
            dgDetailView.Columns[0].GroupIndex = 0;
            dgDetailView.Columns[0].SortIndex = 0;
            dgDetailView.Columns[0].SortOrder = DevExpress.Data.ColumnSortOrder.Ascending;
            dgDetailView.Columns[1].GroupIndex = 1;
            dgDetailView.Columns[1].SortIndex = 1;
            dgDetailView.Columns[1].SortOrder = DevExpress.Data.ColumnSortOrder.Ascending;
        }

        dgDetailView.OptionsView.ShowGroupedColumns = false;
        dgDetailView.OptionsView.GroupDrawMode = GroupDrawMode.Standard;
        dgDetailView.OptionsMenu.ShowGroupSummaryEditorItem = true;

        // Group Count 표시
        GridGroupSummaryItem item = new GridGroupSummaryItem();
        item.FieldName = "gpCount";
        item.SummaryType = DevExpress.Data.SummaryItemType.Count;

        dgDetailView.GroupSummary.Clear();
        dgDetailView.GroupSummary.Add(item);
        //dgDetailView.ExpandAllGroups();
    }

    //Cursor = Cursors.Default;
    SplashScreenManager.CloseForm();
}

 

반응형