본문 바로가기
소소한 C# 지식

[C#]C# Winform Datagridview Row 이동 하기

by 해뤼맘 2022. 4. 28.
728x90
반응형

안녕하세요

C# Datagridview에서 Up, Down 버튼을 클릭했을 때

Row를 원하는 위치로 이동 할 수 있는 코드를 포스팅하겠습니다.

 

1. Windows Form을 생성합니다.

  • DataTable에 No, 이름, 지역 컬럼을 생성 한 뒤 4 Row의 데이터를 담았습니다.
  • Datatable에 데이터를 담은 다음 Datagridview Datasource에 담아서 표시하였습니다.

순서 변경 예제

 private void FrmdgvChangeRow_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("NO");
            dt.Columns.Add("name");
            dt.Columns.Add("area");

            dt.Rows.Add("1", "도레미", "강남");
            dt.Rows.Add("2", "파솔라", "역삼");
            dt.Rows.Add("3", "시도", "서초");
            dt.Rows.Add("4", "도미솔", "방배");

            dgvRowChange.DataSource = dt;
        }

2. Datagridview Row 이동 하기

  • Up, Down 버튼 클릭 이벤트를 추가합니다.
  • 이동할 로우를 선택 하고 Up 버튼을 클릭할 경우 위로 이동합니다.
  • 이동 할 로우를 선태가 하고 Down 버튼을 클릭 할 경우 아래로 이동합니다.
//UP 버튼 Click 이벤트
private void btnUp_Click(object sender, EventArgs e)
        {

            var row = dgvRowChange.SelectedRows[0];

            if (row != null && row.Index > 0)
            {
                var swapRow = dgvRowChange.Rows[row.Index - 1];
                object[] values = new object[swapRow.Cells.Count];

                foreach (DataGridViewCell cell in swapRow.Cells)
                {
                    values[cell.ColumnIndex] = cell.Value;
                    cell.Value = row.Cells[cell.ColumnIndex].Value;
                }

                foreach (DataGridViewCell cell in row.Cells)
                    cell.Value = values[cell.ColumnIndex];

                dgvRowChange.Rows[row.Index - 1].Selected = true;//have the selection follow the moving cell
            }
        }

//Down 버튼 Click 이벤트
        private void btnDown_Click(object sender, EventArgs e)
        {
            var row = dgvRowChange.SelectedRows[0];

            if (row != null && row.Index < dgvRowChange.RowCount - 1)
            {
                var swapRow = dgvRowChange.Rows[row.Index + 1];
                object[] values = new object[swapRow.Cells.Count];

                foreach (DataGridViewCell cell in swapRow.Cells)
                {
                    values[cell.ColumnIndex] = cell.Value;
                    cell.Value = row.Cells[cell.ColumnIndex].Value;
                }

                foreach (DataGridViewCell cell in row.Cells)
                    cell.Value = values[cell.ColumnIndex];

                dgvRowChange.Rows[row.Index + 1].Selected = true;
            }
        }

 

3. Datagridview Row 이동 결과

  • NO "4"인 Row를 선택하고 Up 버튼 클릭 시 아래와 같이 한 줄 위로 이동한 것을 볼 수 있습니다.
  • NO "1"인 Row를 선택하고 Down 버튼을 클릭하여 맨 아래로 이동 한 것을 볼 수 있습니다.

Datagridview Row 이동 결과
Datagridview Row 이동 결과

이상 C# Winform Datagridview의 Row 이동 하기였습니다.

728x90
반응형

댓글