DataGridView.DataSource DataGridView.DataSource DataGridView.DataSource DataGridView.DataSource Property


DataGridView에 데이터가 표시되는 데이터 소스를 가져오거나 설정합니다.Gets or sets the data source that the DataGridView is displaying data for.

 property System::Object ^ DataSource { System::Object ^ get(); void set(System::Object ^ value); };
public object DataSource { get; set; }
member this.DataSource : obj with get, set
Public Property DataSource As Object

속성 값

표시할 DataGridView에 대한 데이터가 포함된 개체입니다.The object that contains data for the DataGridView to display.


데이터 소스에서 오류가 발생했을 때 DataError 이벤트에 대한 처리기가 없거나 처리기에서 ThrowException 속성을 true로 설정한 경우.An error occurred in the data source and either there is no handler for the DataError event or the handler has set the ThrowException property to true. 예외 개체는 일반적으로 FormatException 형식으로 캐스팅할 수 있습니다.The exception object can typically be cast to type FormatException.


다음 코드 예제에서는 간단한 데이터 바인딩된을 초기화 하는 방법을 보여 줍니다 DataGridView합니다.The following code example demonstrates how to initialize a simple data-bound DataGridView. 설정 하는 방법을 보여 줍니다는 DataSource 속성입니다.It also demonstrates how to set the DataSource property.

#using <System.Transactions.dll>
#using <System.EnterpriseServices.dll>
#using <System.Xml.dll>
#using <System.Drawing.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Data.dll>

using namespace System;
using namespace System::Data;
using namespace System::Data::SqlClient;
using namespace System::Windows::Forms;
using namespace System::Drawing;
public ref class Form1: public System::Windows::Forms::Form
      : Form()
      //This call is required by the Windows Form Designer.
      //Add any initialization after the InitializeComponent() call


      if ( components != nullptr )
         delete components;

   System::Windows::Forms::DataGridView ^ dataGridView1;
   System::Windows::Forms::BindingSource ^ bindingSource1;

   //Required by the Windows Form Designer
   System::ComponentModel::IContainer^ components;

   //NOTE: The following procedure is required by the Windows Form Designer
   //It can be modified using the Windows Form Designer.  
   //Do not modify it using the code editor.

   void InitializeComponent()
      this->dataGridView1 = gcnew System::Windows::Forms::DataGridView;
      this->bindingSource1 = gcnew System::Windows::Forms::BindingSource;

      this->dataGridView1->Location = System::Drawing::Point( 96, 71 );
      this->dataGridView1->Name = "DataGridView1";
      this->dataGridView1->Size = System::Drawing::Size( 321, 286 );
      this->dataGridView1->TabIndex = 0;

      this->ClientSize = System::Drawing::Size( 518, 413 );
      this->Controls->Add( this->dataGridView1 );
      this->Name = "Form1";
      this->Text = "Form1";
      this->ResumeLayout( false );


   static property Form1^ GetInstance 
      Form1^ get()
         if ( m_DefaultInstance == nullptr || m_DefaultInstance->IsDisposed )
            System::Threading::Monitor::Enter( m_SyncObject );
               if ( m_DefaultInstance == nullptr || m_DefaultInstance->IsDisposed )
                  m_DefaultInstance = gcnew Form1;
               System::Threading::Monitor::Exit( m_SyncObject );

         return m_DefaultInstance;

   static Form1^ m_DefaultInstance;
   static Object^ m_SyncObject = gcnew Object;

   void InitializeDataGridView()
         // Set up the DataGridView.
         dataGridView1->Dock = DockStyle::Fill;

         // Automatically generate the DataGridView columns.
         dataGridView1->AutoGenerateColumns = true;

         // Set up the data source.
         bindingSource1->DataSource = GetData( "Select * From Products" );
         dataGridView1->DataSource = bindingSource1;

         // Automatically resize the visible rows.
         dataGridView1->AutoSizeRowsMode = DataGridViewAutoSizeRowsMode::DisplayedCellsExceptHeaders;

         // Set the DataGridView control's border.
         dataGridView1->BorderStyle = BorderStyle::Fixed3D;

         // Put the cells in edit mode when user enters them.
         dataGridView1->EditMode = DataGridViewEditMode::EditOnEnter;
      catch ( SqlException^ ) 
         MessageBox::Show( "To run this sample replace connection.ConnectionString"
         " with a valid connection string to a Northwind"
         " database accessible to your system.", "ERROR", MessageBoxButtons::OK, MessageBoxIcon::Exclamation );
      catch ( System::Exception^ ex ) 
         MessageBox::Show( ex->ToString() );

   DataTable^ GetData( String^ sqlCommand )
      String^ connectionString = "Integrated Security=SSPI;Persist Security Info=False;"
      "Initial Catalog=Northwind;Data Source= localhost";
      SqlConnection^ northwindConnection = gcnew SqlConnection( connectionString );
      SqlCommand^ command = gcnew SqlCommand( sqlCommand,northwindConnection );
      SqlDataAdapter^ adapter = gcnew SqlDataAdapter;
      adapter->SelectCommand = command;
      DataTable^ table = gcnew DataTable;
      adapter->Fill( table );
      return table;

int main()
   Application::Run( gcnew Form1 );
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Drawing;

public class Form1 : System.Windows.Forms.Form
    private DataGridView dataGridView1 = new DataGridView();
    private BindingSource bindingSource1 = new BindingSource();

    public Form1()
        dataGridView1.Dock = DockStyle.Fill;

    private void InitializeDataGridView()
            // Set up the DataGridView.
            dataGridView1.Dock = DockStyle.Fill;

            // Automatically generate the DataGridView columns.
            dataGridView1.AutoGenerateColumns = true;

            // Set up the data source.
            bindingSource1.DataSource = GetData("Select * From Products");
            dataGridView1.DataSource = bindingSource1;

            // Automatically resize the visible rows.
            dataGridView1.AutoSizeRowsMode =

            // Set the DataGridView control's border.
            dataGridView1.BorderStyle = BorderStyle.Fixed3D;

            // Put the cells in edit mode when user enters them.
            dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
        catch (SqlException)
            MessageBox.Show("To run this sample replace connection.ConnectionString" +
                " with a valid connection string to a Northwind" +
                " database accessible to your system.", "ERROR",
                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

    private static DataTable GetData(string sqlCommand)
        string connectionString = "Integrated Security=SSPI;" +
            "Persist Security Info=False;" +
            "Initial Catalog=Northwind;Data Source=localhost";

        SqlConnection northwindConnection = new SqlConnection(connectionString);

        SqlCommand command = new SqlCommand(sqlCommand, northwindConnection);
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = command;

        DataTable table = new DataTable();
        table.Locale = System.Globalization.CultureInfo.InvariantCulture;

        return table;

    public static void Main()
        Application.Run(new Form1());
Imports System.Data
Imports System.Data.SqlClient
Imports System.Windows.Forms
Imports System.Drawing
Public Class Form1
    Inherits System.Windows.Forms.Form

    Private WithEvents dataGridView1 As New DataGridView()
    Private bindingSource1 As New BindingSource()

    Public Sub New()

        Me.dataGridView1.Dock = DockStyle.Fill

    End Sub

    Private Sub InitializeDataGridView()
            ' Set up the DataGridView.
            With Me.dataGridView1
                ' Automatically generate the DataGridView columns.
                .AutoGenerateColumns = True

                ' Set up the data source.
                bindingSource1.DataSource = GetData("Select * From Products")
                .DataSource = bindingSource1

                ' Automatically resize the visible rows.
                .AutoSizeRowsMode = _

                ' Set the DataGridView control's border.
                .BorderStyle = BorderStyle.Fixed3D

                ' Put the cells in edit mode when user enters them.
                .EditMode = DataGridViewEditMode.EditOnEnter
            End With
        Catch ex As SqlException
            MessageBox.Show("To run this sample replace " _
                & "connection.ConnectionString with a valid connection string" _
                & "  to a Northwind database accessible to your system.", _
                "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
    End Sub

    Private Shared Function GetData(ByVal sqlCommand As String) _
        As DataTable

        Dim connectionString As String = _
            "Integrated Security=SSPI;Persist Security Info=False;" _
            & "Initial Catalog=Northwind;Data Source=localhost"

        Dim northwindConnection As SqlConnection = _
            New SqlConnection(connectionString)

        Dim command As New SqlCommand(sqlCommand, northwindConnection)
        Dim adapter As SqlDataAdapter = New SqlDataAdapter()
        adapter.SelectCommand = command

        Dim table As New DataTable
        table.Locale = System.Globalization.CultureInfo.InvariantCulture

        Return table

    End Function

    <STAThreadAttribute()> _
    Public Shared Sub Main()
        Application.Run(New Form1)
    End Sub

End Class


DataGridView 클래스는 표준 Windows Forms 데이터 바인딩 모델을 지원 합니다.The DataGridView class supports the standard Windows Forms data-binding model. 즉, 데이터 소스는 다음 인터페이스 중 하나를 구현 하는 모든 형식일 수 있습니다.This means the data source can be of any type that implements one of the following interfaces:

특정 예제를 보려면 예제 부분 및 끝이 섹션의 작업 테이블을 참조 하세요.For specific examples, see the Example section and the task table at the end of this section.

일반적으로 바인딩할를 BindingSource 구성 요소 및 바인딩은 BindingSource 구성 요소를 다른 데이터 원본 또는 비즈니스 개체를 입력 합니다.Typically, you will bind to a BindingSource component and bind the BindingSource component to another data source or populate it with business objects. BindingSource 다양 한 데이터 원본에 바인딩할 수 있습니다 하 고 많은 데이터 바인딩 문제를 자동으로 해결할 수 있기 때문에 구성 요소는 기본 데이터 원본입니다.The BindingSource component is the preferred data source because it can bind to a wide variety of data sources and can resolve many data binding issues automatically.

여러 목록 또는 테이블을 포함 하는 데이터 소스에 바인딩할 경우 설정 해야 합니다는 DataMember 목록 또는 바인딩할 테이블을 지정 하는 문자열 속성입니다.When binding to a data source that contains multiple lists or tables, you must set the DataMember property to a string that specifies the list or table to bind to. 바인딩할 때를 BindingSource 설정할 수 있지만 여러 목록 또는 테이블을 포함 하는 구성 요소를 DataMember 의 속성을 BindingSource 구성 요소 대신.When binding to a BindingSource component that contains multiple lists or tables, however, you can set the DataMember property of the BindingSource component instead.

개체 컬렉션 대신 데이터베이스의 데이터를 바인딩하는 경우 일반적으로 설정한 합니다 DataSourceNullValue 반환 하는 개체의 속성을 DefaultCellStyle 속성을 null 의 기본값을 사용 하는 대신 DBNull.Value는 데이터베이스 데이터에 적합 합니다.When binding to an object collection rather than to database data, you will typically set the DataSourceNullValue property of the object returned by the DefaultCellStyle property to null rather than using the default value of DBNull.Value, which is appropriate for database data.

자세한 내용은 Windows Forms DataGridView 컨트롤에서 데이터 표시합니다.For more information, see Displaying Data in the Windows Forms DataGridView Control. 다음 표에서 관련 된 일반적인 작업에 대 한 직접 링크를 DataSource 속성입니다.The following table provides direct links to common tasks related to the DataSource property.

연습: 두 Windows Forms DataGridView 컨트롤 을 사용 하 여 마스터/세부 폼 만들기 및 방법: Windows Forms DataGridView 컨트롤에 개체를 바인딩합니다.See Walkthrough: Creating a Master/Detail Form Using Two Windows Forms DataGridView Controls and How to: Bind Objects to Windows Forms DataGridView Controls.

적용 대상

추가 정보