DataGridView.DataSource Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia źródło danych, dla którego DataGridView są wyświetlane dane.
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
Wartość właściwości
Obiekt zawierający dane do DataGridView wyświetlenia.
Wyjątki
Wystąpił błąd w źródle danych i nie ma procedury obsługi dla DataError zdarzenia lub program obsługi ustawił ThrowException właściwość na true
. Obiekt wyjątku może być zwykle rzutowy do typu FormatException.
Przykłady
W poniższym przykładzie kodu pokazano, jak zainicjować proste dane powiązane DataGridView. Pokazuje również, jak ustawić DataSource właściwość .
#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
Uwagi
Klasa DataGridView obsługuje standardowy model powiązania danych Windows Forms. Oznacza to, że źródło danych może być dowolnego typu, które implementuje jeden z następujących interfejsów:
Interfejs IList , w tym tablice jednowymiarowe.
Interfejs IListSource , taki jak DataTable klasy i DataSet .
Interfejs IBindingList , taki jak BindingList<T> klasa .
Interfejs IBindingListView , taki jak BindingSource klasa .
Aby zapoznać się z konkretnymi przykładami, zobacz sekcję Przykład i tabelę zadań na końcu tej sekcji.
Zazwyczaj jest to powiązanie ze składnikiem BindingSource i powiązanie BindingSource składnika z innym źródłem danych lub wypełnienie go obiektami biznesowymi. Składnik BindingSource jest preferowanym źródłem danych, ponieważ może być powiązany z wieloma różnymi źródłami danych i może automatycznie rozwiązywać wiele problemów z powiązaniem danych.
W przypadku powiązania ze źródłem danych zawierającym wiele list lub tabel należy ustawić DataMember właściwość na ciąg określający listę lub tabelę, z którą ma zostać powiązane. Podczas tworzenia powiązania ze składnikiem zawierającym BindingSource wiele list lub tabel można jednak ustawić DataMember właściwość BindingSource składnika.
Powiązanie z kolekcją obiektów, a nie z danymi bazy danych, zazwyczaj ustawia DataSourceNullValue właściwość obiektu zwracanego przez DefaultCellStyle właściwość na null
wartość , a nie przy użyciu wartości domyślnej DBNull.Value, która jest odpowiednia dla danych bazy danych.
Aby uzyskać więcej informacji, zobacz Wyświetlanie danych w kontrolce DataGridView Windows Forms. Poniższa tabela zawiera bezpośrednie linki do typowych zadań związanych z właściwością DataSource .
Zobacz Przewodnik: tworzenie formularza wzorca/szczegółów przy użyciu dwóch kontrolek DataGridView Windows Forms i Instrukcje: wiązanie obiektów z kontrolkami dataGridView Windows Forms.