본문 바로가기

Tip !!!/C# tip

Table에 연결된 DataGridView Row 이동방법

바운딩된 DataGrid는 삭제 삽입이 안됩니다.

그래서 Table에서 삭제 삽입을 해야 합니다.

그러면 바로 DataGridView에도 반영됩니다.

다음의 코드는 Row를 위로 아래로 이동 시키는 코드 예입니다.

 


 public partial class Form1 : Form
    {     
        DataSet ds;              //  작업 DataSet 
        DataTable dt;           //  작업 Data Table     

                                        //   DataGridView의 이름  dataGrid    


private void btUp_Click(object sender, EventArgs e)
        {           
            int index = dataGrid.SelectedRows[0].Index;                    //  선택된 Row의 인덱스
            if (index <= 0 || index>dataGrid.Rows.Count-2)    return; // 처음위치 또는 범위밖                       
            DataRow tempRow= dt.NewRow();                                  //  Row 삭제전 임시저장용
            tempRow.ItemArray=dt.Rows[index].ItemArray;         // 선택된 Row를 임시저장용에 복사         
            dt.Rows.RemoveAt(index);                                               //  현재위치에서 삭제
            dt.Rows.InsertAt(tempRow,index-1);                                //  현재위치 앞에 복사본 삽입
            dataGrid.CurrentCell = dataGrid.Rows[index-1].Cells[0]; // 이동된 Row를 선택
                                
            ControlEnable();
        }


 private void btDown_Click(object sender, EventArgs e)
        {
            int index = dataGrid.SelectedRows[0].Index;          
            if (index > dataGrid.Rows.Count - 2) return; // Row가 3개면  Count는 4.
            DataRow tempRow = dt.NewRow();
            tempRow.ItemArray = dt.Rows[index].ItemArray;
            dt.Rows.RemoveAt(index);
            dt.Rows.InsertAt(tempRow, index + 1);
            dataGrid.CurrentCell = dataGrid.Rows[index + 1].Cells[0];

            ControlEnable();
        }