DataGridView.DataSource Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger datakällan som DataGridView visar data för.
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
Egenskapsvärde
Objektet som innehåller data som DataGridView ska visas.
Undantag
Ett fel uppstod i datakällan och antingen finns det ingen hanterare för DataError händelsen eller så har hanteraren angett ThrowException egenskapen till true. Undantagsobjektet kan vanligtvis omvandlas till att skriva FormatException.
Exempel
Följande kodexempel visar hur du initierar en enkel databunden DataGridView. Det visar också hur du DataSource anger egenskapen.
#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
Kommentarer
Klassen DataGridView stöder databindningsmodellen standard Windows Forms. Det innebär att datakällan kan vara av vilken typ som helst som implementerar något av följande gränssnitt:
Gränssnittet IList , inklusive endimensionella matriser.
Gränssnittet IListSource , till exempel klasserna DataTable och DataSet .
Gränssnittet IBindingList , till exempel BindingList<T> klassen.
Gränssnittet IBindingListView , till exempel BindingSource klassen.
Specifika exempel finns i avsnittet Exempel och uppgiftstabellen i slutet av det här avsnittet.
Vanligtvis binder du till en BindingSource komponent och binder komponenten BindingSource till en annan datakälla eller fyller den med affärsobjekt. Komponenten BindingSource är den önskade datakällan eftersom den kan binda till en mängd olika datakällor och kan lösa många databindningsproblem automatiskt.
När du binder till en datakälla som innehåller flera listor eller tabeller måste du ange DataMember egenskapen till en sträng som anger listan eller tabellen som ska bindas till. När du binder till en BindingSource komponent som innehåller flera listor eller tabeller kan du dock ange komponentens DataMemberBindingSource egenskap i stället.
När du binder till en objektsamling i stället för till databasdata anger DataSourceNullValue du vanligtvis egenskapen för objektet som returneras av DefaultCellStyle egenskapen till i stället för att null använda standardvärdet DBNull.Value, vilket är lämpligt för databasdata.
Mer information finns i Displaying Data i Windows Forms DataGridView Control. Följande tabell innehåller direkta länkar till vanliga uppgifter som är relaterade till egenskapen DataSource .
Se Walkthrough: Skapa ett huvud-/informationsformulär med två Windows Forms DataGridView-kontroller och Så här: Binda objekt till Windows Forms DataGridView-kontroller.