C#을 사용하여 DataGridView에 행 추가

Abdul Mateen 2024년2월16일
  1. C#DataGridView
  2. C#DataGridView에 행 추가
C#을 사용하여 DataGridView에 행 추가

이 기사에서는 C#의 DataGridView에 대해 알아봅니다. 먼저 DataGridView에 대한 몇 가지 아이디어와 테이블, 즉 행과 열에 데이터를 저장해야 하는 이유를 알아보겠습니다.

다음으로 그리드에 행을 추가하는 다양한 방법에 대해 설명합니다.

과거에는 대부분의 개발자가 데이터를 파일에 저장했습니다. 필요할 때마다 모든 파일을 순차적으로 검색해야 했기 때문에 시간이 많이 소요되었습니다.

이 문제를 극복하기 위해 테이블이 발명되었습니다.

테이블에는 데이터가 잘 구성된 방식으로 행과 열에 순차적으로 저장됩니다. 테이블은 시간 소모 없이 행과 열 전체에서 빠르고 효율적인 가독성을 제공합니다.

그리드는 셀, 즉 행과 열 형태의 테이블 형식이기도 합니다.

C#DataGridView

Visual Studio 2008에는 Windows Forms 컨트롤에서 사용할 수 있는 DataGridView 컨트롤이 있습니다. 이 컨트롤은 이전 버전에 비해 데이터를 관리할 수 있는 광범위한 기능을 추가했습니다.

강도 외에도 이 컨트롤은 데이터를 행-열 형식으로 표시할 수 있는 유연성을 제공합니다.

DataGridView 컨트롤을 사용하여 소량의 데이터에 대한 읽기 전용 보기를 표시할 수 있습니다. 대규모 데이터 세트에 편집 가능한 보기를 표시하는 데 사용할 수도 있습니다.

크고 작은 데이터 세트 외에도 이 컨트롤을 사용하여 마스터 세부 정보를 표시할 수도 있습니다.

DataGridView 컨트롤은 보기 및 편집을 위해 다양한 데이터 소스에 사용할 수 있습니다. 이 컨트롤에는 데이터를 이 컨트롤에 바인딩하는 간단하고 직관적인 방법이 있습니다.

데이터 소스의 여러 테이블을 바인딩하려면 DataMember 속성에서 문자열로 설정합니다.

DataGridView 컨트롤은 다음 인터페이스를 구현하는 모든 클래스 인스턴스에 바인딩됩니다.

  1. IList 인터페이스에는 1차원 배열도 포함됩니다.
  2. IListSource 인터페이스. 예제는 DataSet 클래스와 DataTable입니다.
  3. BindingList<(Of <(T>)>) 클래스와 같은 IBindingList 인터페이스.
  4. BindingSource 클래스와 같은 IBindingListView 인터페이스.

DataGridView 컨트롤은 위의 인터페이스에서 설명하는 객체의 공개 속성에 데이터를 바인딩할 수 있습니다. DataGridView 컨트롤은 주로 BindingSource를 연결하는 반면 BindingSource는 다른 참조 데이터 소스 또는 비즈니스 개체에 바인딩됩니다.

이 컨트롤은 ICustomTypeDescriptor 인터페이스에서 반환된 속성 컬렉션에 대한 데이터 바인딩도 지원합니다.

C#의 DataGridView는 사용자 지정 가능한 그리드, 즉 Windows Form의 표 형식으로 데이터를 표시합니다. System.Windows.Forms 네임스페이스의 일부입니다.

그리드를 사용하는 구문은 다음과 같습니다.

[System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
[System.Windows.Forms.Docking(System.Windows.Forms.DockingBehavior.Ask)]
public class DataGridView : System.Windows.Forms.Control, System.ComponentModel.ISupportInitialize

DataGridView 클래스를 통해 셀, 행, 열 및 테두리를 사용자 지정할 수 있습니다. DataGridView 컨트롤은 데이터 소스가 있거나 없는 데이터를 표시합니다.

여전히 데이터 소스를 제공해야 하는 경우 행 및 열 속성으로 DataGridView에서 행 및 열을 추가할 수 있습니다. DataGridView rowscols 개체를 사용하여 행 및 열 컬렉션에 액세스할 수도 있습니다.

이 문서에서는 데이터 그리드 보기에 행을 추가하는 데 중점을 두므로 몇 가지 방법을 찾아보겠습니다.

C#DataGridView에 행 추가

DataGridView에서 행을 추가하는 여러 가지 방법에 대해 설명합니다. 각 방법에 대한 코딩 세부 정보를 제공합니다.

행 수동 추가

DataGridView에서 행을 추가하는 가장 쉬운 방법은 데이터 그리드 보기에서 Rows.Add() 메서드를 사용하여 수동으로 수행할 수 있습니다. 다음 예제에서는 MyForm.cs 클래스에서 행을 표시하는 add_Data 버튼 함수가 작성됩니다.

그리드와 그리드를 표시하는 버튼을 사용하여 WPF FormDesign에서 양식 디자인을 만들 수 있습니다.

using System;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Manual_Addition_of_Rows_Datagrid {
  public partial class MyForm : FormDesign {
    public MyForm() {
      IntializeComponent();
    }
    private void add_Data(object sender, EventArgs e) {
      dataGridView1.ColumnCount = 3;
      dataGridView1.Columns[0].Name = "ID";
      dataGridView1.Columns[1].Name = "Course Name";
      dataGridView1.Columns[2].Name = "Marks";

      string[] row = new string[] { "1", "OOP", "75" };
      dataGridView1.Rows.Add(row);
      row = new string[] { "2", "DSA", "86" };
      dataGridView1.Rows.Add(row);
      row = new string[] { "3", "AOA", "67" };
      dataGridView1.Rows.Add(row);
    }
  }
}

또한 Columns 컬렉션을 사용하여 DataGridView 컨트롤의 열에 액세스하고 Rows 컬렉션을 사용하여 DataGridView 컨트롤의 행에 액세스할 수 있습니다.

DataGridView가 데이터 테이블이나 데이터 세트에 바인딩되지 않은 경우 다음 코드를 사용하여 새 행을 추가할 수 있습니다.

var index = dataGridView1.Rows.Add();
dataGridView1.Rows[index].Cells["Column1"].Value = "Column1 value";
dataGridView1.Rows[index].Cells["Column2"].Value = 9.5;

새 행을 동적으로 추가

다음 예는 Windows 애플리케이션 양식 Form1에서 그리드의 열과 행을 동적으로 추가하는 방법을 보여줍니다. 프로젝트를 만든 후 도구 상자의 dataGridViewForm1.cs[Design]에 추가하고 그리드의 오른쪽 상단 버튼에서 컨테이너 옵션의 도크를 클릭합니다.

이제 Form1.cs 파일로 이동하여 Form을 일부 변경합니다. 먼저 아래와 같이 네임스페이스를 추가합니다.

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AddingRowsColumnsInGrid {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }
    public void updateGrid() {
      // Update the data grid view here dynamically
      // Add columns
      dataGridView1.ColumnCount = 4;
      dataGridView1.Columns[0].Name = "Bus Id";
      dataGridView1.Columns[1].Name = "Bus Name";
      dataGridView1.Columns[2].Name = "Bus Model";
      dataGridView1.Columns[3].Name = "Bus Color";

      // Now adding rows
      ArrayList arrRow = new ArrayList();
      arrRow.Add("1");
      arrRow.Add("School bus");
      arrRow.Add("2000");
      arrRow.Add("Yellow");
      dataGridView1.Rows.Add(arrRow.ToArray());

      arrRow = new ArrayList();
      arrRow.Add("2");
      arrRow.Add("Speedo bus");
      arrRow.Add("2014");
      arrRow.Add("Red");
      dataGridView1.Rows.Add(arrRow.ToArray());

      arrRow = new ArrayList();
      arrRow.Add("3");
      arrRow.Add("Metro bus");
      arrRow.Add("205");
      arrRow.Add("Orange");
      dataGridView1.Rows.Add(arrRow.ToArray());
    }
    private void Form1_Load_1(object sender, EventArgs e) {
      updateGrid();
    }
  }
}

위의 코드에서 폼 구성 요소를 초기화한 다음 Form1_Load_1 함수를 생성하여 그리드에서 발생한 객체 및 이벤트를 처리하고 열과 행을 추가할 updateGrid()를 전달하는 것을 볼 수 있습니다. 그룹에 개체를 저장하고 조작할 수 있으므로 그리드의 행이 ArrayList 개체에 추가되었습니다.

위 코드의 출력은 다음과 같습니다.

동적으로 행 추가

데이터 테이블을 통해 그리드에 행 추가

C# WinForm에는 그리드에 데이터를 추가하는 여러 가지 방법이 있습니다. 간단히 말해서 데이터 테이블은 데이터베이스에서 주로 사용되는 객체로 정의할 수 있습니다.

행과 열이 있는 데이터베이스 테이블과 같습니다. 데이터 테이블에 대한 자세한 내용을 보려면 Microsoft의 기사를 방문하십시오.

아래 예에서 먼저 데이터 테이블 개체를 만들고 데이터 테이블의 기본 제공 속성을 사용하여 그리드에 열과 행을 추가했음을 알 수 있습니다. 데이터 소스는 주로 DataGridView에 대한 데이터를 가져오거나 설정하는 데 사용되는 데이터 테이블의 속성이기도 합니다.

텍스트 상자에 데이터를 채운 후 행 추가를 누르면 데이터 소스가 그리드에 데이터를 채웁니다.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SampleGridData {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }
    DataTable dt = new DataTable();
    private void Form1_Load(object sender, EventArgs e) {
      dt.Columns.Add("Emp Id", typeof(int));
      dt.Columns.Add("Ename", typeof(string));
      dt.Columns.Add("Company", typeof(string));
      dt.Columns.Add("Email", typeof(string));

      dt.Rows.Add(1, "Alexa", "Apple", "alexa123@apple.io");
      dt.Rows.Add(2, "Hugh Jack", "Microsoft", "hugh345@microsoft.com");
      dt.Rows.Add(3, "Jacob", "HP", "jacob678@hp.io");
      dt.Rows.Add(4, "Ariana", "Huawive", "arina86@huaweiv.com");

      dataGridView1.DataSource = dt;
    }
    private void button1_Click(object sender, EventArgs e) {
      dt.Rows.Add(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);
      dataGridView1.DataSource = dt;
    }
  }
}

위 코드의 출력은 다음과 같습니다.

fullgrid

Clone 방법을 통해 행 추가

C#에서는 clone 메서드를 사용하여 그리드에 행을 추가할 수 있습니다. 복제는 그리드에 행과 열을 추가하기 위해 하나의 DataGridView에서 다른 데이터로 데이터를 복사하는 것을 의미합니다.

주요 목적은 한 그리드에서 다른 그리드로 데이터를 복사하는 것이지만 행을 추가할 수 있습니다. 예를 들어:

DataGridViewRow myRow = (DataGridViewRow)myGrid.Rows[0].Clone();
myRow.Cells[2].Value = "My first Grid";
myRow.Cells[4].Value = 23.5;
myGrid.Rows.Add(myRow);

위의 코드는 그리드에 추가할 한 행 값을 나타냅니다. 그러나 셀에서 더 나은 행 배열을 제공하므로 행 템플릿을 만들 수도 있습니다.

예를 들어:

DataGridViewRow r1 = (DataGridViewRow)myGrid1.RowTemplate.Clone();
r1.CreateCells(myGrid1, "col1", "col2", "col3");
myGrid1.Rows.Add(row);

데이터 그리드 보기에 동적으로 행을 추가하는 방법은 여러 가지가 있지만 다음은 몇 가지 예입니다.

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AddingRowsColumnsInGrid {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }
    public void updateGrid() {
      dataGridView1.ColumnCount = 4;
      dataGridView1.Columns[0].Name = "Bus Id";
      dataGridView1.Columns[1].Name = "Bus Name";
      dataGridView1.Columns[2].Name = "Bus Model";
      dataGridView1.Columns[3].Name = "Bus Color";

      dataGridView1.AllowUserToAddRows = true;
      DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
      row.Cells[0].Value = "1";
      row.Cells[1].Value = "School bus";
      row.Cells[2].Value = "2000";
      row.Cells[3].Value = "Yellow";
      dataGridView1.Rows.Add(row);

      row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
      row.Cells[0].Value = "4";
      row.Cells[1].Value = "Speedo bus";
      row.Cells[2].Value = "2014";
      row.Cells[3].Value = "Red";
      dataGridView1.Rows.Add(row);

      row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
      row.Cells[0].Value = "3";
      row.Cells[1].Value = "Metro bus";
      row.Cells[2].Value = "2015";
      row.Cells[3].Value = "Orange";
      dataGridView1.Rows.Add(row);

      row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
      row.Cells[0].Value = "4";
      row.Cells[1].Value = "Daewoo bus";
      row.Cells[2].Value = "2021";
      row.Cells[3].Value = "Blue";
      dataGridView1.Rows.Add(row);
    }
    private void Form1_Load_1(object sender, EventArgs e) {
      updateGrid();
    }
  }
}

이 예제에서는 이해하기 쉽도록 위의 코드를 사용했습니다. DataGridView에서 clone 속성은 행과 해당 속성을 복사하고 행 복사본을 원본으로 채우는 데 사용됩니다.

위의 코드에서는 clone 메서드를 사용하여 행을 복사했습니다. 복제 방법에 대한 자세한 내용을 보려면 이 페이지를 방문하십시오.

위 코드의 출력은 다음과 같습니다.

클론

페이지를 방문하여 데이터 그리드 보기에서 행을 추가하는 방법을 읽을 수 있습니다. 여전히 그리드에 행을 추가하는 것이 모호한 경우 이 기사를 읽을 수도 있습니다.

DataGridView에 대해 자세히 설명했습니다. 데이터를 DataGridView에 바인딩하는 여러 가지 방법에 대해 논의했습니다.

데이터 그리드 보기 및 해당 기능에 대해 잘 알고 있고 다른 그리드 방법을 통해 행을 추가하고 해당 속성을 설정하는 데 익숙해지기를 바랍니다.