개발(IT)/DevExpress(WinForm)

[GridView] Cell Merge(셀 병합) 하기

isony 2023. 9. 2. 11:51
반응형
using System;
using System.Data;
using System.Windows.Forms;

using DevExpress.XtraGrid.Views.Grid;

namespace WinFormTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // 초기화 선언
            this.Shown += WinFormTest_Shown;
        }

        private void WinFormTest_Shown(object sender, EventArgs e)
        {
            initGridControl();
            this.gridControl1.DataSource = GetData();
        }

        private void initGridControl()
        {
            GridView gv = this.gridControl1.MainView as GridView;
            gv.OptionsView.ShowGroupPanel = false;
            gv.OptionsBehavior.Editable = false;

            gv.OptionsView.AllowCellMerge = true;

            gv.CellMerge += CellMerge_Event;
        }

        private DataTable GetData()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Name");
            dt.Columns.Add("Age");
            dt.Columns.Add("Sex");
            dt.Columns.Add("Score");

            dt.Rows.Add(new string[] { "조조", "28", "남성", "100" });
            dt.Rows.Add(new string[] { "유비", "28", "여성", "45" });
            dt.Rows.Add(new string[] { "황선홍", "56", "여성", "10" });
            dt.Rows.Add(new string[] { "안정환", "34", "남성", "78" });
            dt.Rows.Add(new string[] { "설기현", "33", "남성", "53" });
            dt.Rows.Add(new string[] { "박지성", "24", "남성", "10" });

            return dt;
        }

        private void CellMerge_Event(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e)
        {
            if (e.Column.FieldName == "Sex")
            {
                var dr1 = gridView1.GetDataRow(e.RowHandle1);  // 위에 행
                var dr2 = gridView1.GetDataRow(e.RowHandle2);  // 아래 행

                // 비교
                e.Merge = dr1["Sex"].ToString().Equals(dr2["Sex"].ToString());
            }
            else
            {
                e.Merge = false;
            }

            e.Handled = true;
        }
    }
}

 

<결과화면>

 

반응형