방법: 런타임에 Windows Forms DataGrid 컨트롤에 표시되는 데이터 변경

참고

DataGridView 컨트롤은 DataGrid 컨트롤을 대체하고 여기에 다른 기능을 추가하여 새로 도입된 컨트롤이지만 이전 버전과의 호환성 및 이후 사용 가능성을 고려하여 DataGrid 컨트롤을 계속 유지하도록 선택할 수 있습니다. 자세한 내용은 Windows Forms DataGridView 컨트롤과 DataGrid 컨트롤의 차이점을 참조하세요.

디자인 타임 기능을 사용하여 Windows Forms DataGrid를 만들었으면, 런타임에 그리드의 DataSet 개체 요소를 동적으로 변경하려고 할 수도 있습니다. 여기에는 테이블의 개별 값에 대한 변경 사항이나 DataGrid 컨트롤에 바인딩되는 데이터 원본 변경이 포함될 수 있습니다. 개별 값에 대한 변경은 DataGrid 컨트롤이 아닌, DataSet 개체를 통해 수행됩니다.

프로그래밍 방식으로 데이터를 변경하려면

  1. DataSet 개체에서 원하는 테이블을 지정하고 테이블에서 원하는 행과 필드를 지정하고 셀을 새 값과 같게 설정합니다.

    참고

    DataSet의 첫 번째 테이블 또는 테이블의 첫 번째 행을 지정하려면 0을 사용합니다.

    다음 예제에서는 Button1을 클릭하여 데이터 세트의 첫 번째 테이블의 첫 번째 행에 대한 두 번째 항목을 변경하는 방법을 보여줍니다. DataSet(ds) 및 테이블(01)은 이전에 만들어졌습니다.

    Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  
       ds.tables(0).rows(0)(1) = "NewEntry"  
    End Sub  
    
    private void button1_Click(object sender, System.EventArgs e)  
    {  
       ds.Tables[0].Rows[0][1]="NewEntry";  
    }  
    
    private:
       void button1_Click(System::Object^ sender, System::EventArgs^ e)  
       {  
          dataSet1->Tables[0]->Rows[0][1] = "NewEntry";  
       }  
    

    (Visual C#, Visual C++) 양식 생성자에 다음 코드를 추가하여 이벤트 처리기를 등록합니다.

    this.button1.Click += new System.EventHandler(this.button1_Click);  
    
    this->button1->Click +=  
       gcnew System::EventHandler(this, &Form1::button1_Click);  
    

    런타임에 SetDataBinding 메서드를 사용하여 DataGrid 컨트롤을 다른 데이터 원본에 바인딩할 수 있습니다. 예를 들어 각각 다른 데이터베이스에 연결된 여러 ADO.NET 데이터 컨트롤이 있을 수 있습니다.

프로그래밍 방식으로 DataSource를 변경하려면

  1. SetDataBinding 메서드를 바인딩할 데이터 원본 및 테이블의 이름으로 설정합니다.

    다음 예제에서는 SetDataBinding 메서드를 사용하여 데이터 원본을 Pubs 데이터베이스의 Authors 테이블에 연결된 ADO.NET 데이터 컨트롤(adoPubsAuthors)로 변경하는 방법을 보여줍니다.

    Private Sub ResetSource()  
       DataGrid1.SetDataBinding(adoPubsAuthors, "Authors")  
    End Sub  
    
    private void ResetSource()  
    {  
       DataGrid1.SetDataBinding(adoPubsAuthors, "Authors");  
    }  
    
    private:  
       void ResetSource()  
       {  
          dataGrid1->SetDataBinding(adoPubsAuthors, "Authors");  
       }  
    

참고 항목