Sdílet prostřednictvím


DataGridView.DataSource Vlastnost

Definice

Získá nebo nastaví zdroj dat, pro DataGridView který se zobrazují data.

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

Hodnota vlastnosti

Objekt obsahující data, která DataGridView se mají zobrazit.

Výjimky

Ve zdroji dat došlo k chybě a buď pro událost neexistuje žádná obslužná rutina DataError , nebo obslužná rutina nastavila ThrowException vlastnost na true. Objekt výjimky lze obvykle přetypovat na typ FormatException.

Příklady

Následující příklad kódu ukazuje, jak inicializovat jednoduchou datovou vazbu DataGridView. Také ukazuje, jak nastavit DataSource vlastnost.

#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
{
public:
   Form1()
      : Form()
   {
      
      //This call is required by the Windows Form Designer.
      InitializeComponent();
      InitializeDataGridView();
      
      //Add any initialization after the InitializeComponent() call
   }


protected:

   ~Form1()
   {
      if ( components != nullptr )
      {
         delete components;
      }
   }

private:
   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.

   [System::Diagnostics::DebuggerNonUserCode]
   void InitializeComponent()
   {
      this->dataGridView1 = gcnew System::Windows::Forms::DataGridView;
      this->bindingSource1 = gcnew System::Windows::Forms::BindingSource;
      this->SuspendLayout();

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

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

internal:

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

         return m_DefaultInstance;
      }
   }

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

   void InitializeDataGridView()
   {
      try
      {
         // 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 );
         System::Threading::Thread::CurrentThread->Abort();
      }
      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;
        this.Controls.Add(dataGridView1);
        InitializeDataGridView();
    }

    private void InitializeDataGridView()
    {
        try
        {
            // 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);
            System.Threading.Thread.CurrentThread.Abort();
        }
    }

    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;
        adapter.Fill(table);

        return table;
    }

    [STAThreadAttribute()]
    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
        Me.Controls.Add(Me.dataGridView1)
        InitializeDataGridView()

    End Sub

    Private Sub InitializeDataGridView()
        Try
            ' 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 = _
                    DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders

                ' 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)
            System.Threading.Thread.CurrentThread.Abort()
        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
        adapter.Fill(table)

        Return table

    End Function

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

End Class

Poznámky

Třída DataGridView podporuje standardní model datové vazby model Windows Forms. To znamená, že zdroj dat může být libovolného typu, který implementuje jedno z následujících rozhraní:

Konkrétní příklady najdete v části Příklad a v tabulce úkolů na konci tohoto oddílu.

Obvykle vytvoříte vazbu na komponentu BindingSource a svážete BindingSource ji s jiným zdrojem dat nebo ji naplníte obchodními objekty. Komponenta BindingSource je upřednostňovaným zdrojem dat, protože může vytvořit vazbu na širokou škálu zdrojů dat a automaticky vyřešit mnoho problémů s datovými vazbami.

Při vytváření vazby na zdroj dat, který obsahuje více seznamů nebo tabulek, je nutné nastavit DataMember vlastnost na řetězec, který určuje seznam nebo tabulku, se kterou chcete vytvořit vazbu. Při vytváření vazby na komponentu BindingSource , která obsahuje více seznamů nebo tabulek, můžete místo toho nastavit DataMember vlastnost BindingSource komponenty.

Při vazbě na kolekci objektů místo na data databáze obvykle nastavíte DataSourceNullValue vlastnost objektu vrácené DefaultCellStyle vlastností na null místo použití výchozí hodnoty DBNull.Value, která je vhodná pro data databáze.

Další informace najdete v tématu Zobrazení dat v ovládacím prvku model Windows Forms DataGridView. Následující tabulka obsahuje přímé odkazy na běžné úlohy související s DataSource vlastností.

Viz Návod: Vytvoření formuláře předlohy/podrobností pomocí dvou model Windows Forms ovládacích prvků DataGridView a Postupy: Vytvoření vazby objektů k model Windows Forms ovládacím prvkům DataGridView.

Platí pro

Viz také