Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het besturingselement DataGridView ondersteunt het standaardmodel voor Windows Forms-gegevensbinding, zodat het kan worden verbonden met verschillende gegevensbronnen. Meestal verbindt u zich met een BindingSource waarmee de interactie met de gegevensbron wordt beheerd. De BindingSource kan elke Windows Forms-gegevensbron zijn, wat u veel flexibiliteit biedt bij het kiezen of wijzigen van de locatie van uw gegevens. Zie het DataGridViewvoor meer informatie over gegevensbronnen die door het besturingselement worden ondersteund.
Visual Studio biedt uitgebreide ondersteuning voor gegevensbinding met het DataGridView-besturingselement. Voor meer informatie, zie Hoe: Gegevens binden aan het besturingselement Windows Forms DataGridView met behulp van de Designer.
Een DataGridView-besturingselement verbinden met gegevens:
Implementeer een methode voor het afhandelen van de details van het ophalen van de gegevens. In het volgende codevoorbeeld wordt een
GetDatamethode geïmplementeerd waarmee een SqlDataAdapterwordt geïnitialiseerd en gebruikt om een DataTablete vullen. Vervolgens wordt de DataTable aan de BindingSourcegebonden.Bind in de Load gebeurtenishandler van het formulier het besturingselement DataGridView aan de BindingSourceen roep de
GetDatamethode aan om de gegevens op te halen.
Voorbeeld
In dit volledige codevoorbeeld worden gegevens opgehaald uit een database om een DataGridView-besturingselement in een Windows-formulier te vullen. Het formulier bevat ook knoppen om gegevens opnieuw te laden en wijzigingen in de database in te dienen.
Voor dit voorbeeld is het volgende vereist:
Toegang tot een voorbeelddatabase van Northwind SQL Server. Zie voor meer informatie over het installeren van de Northwind-voorbeelddatabase De voorbeelddatabases ophalen voor ADO.NET codevoorbeelden.
Verwijzingen naar de assembly's System, System.Windows.Forms, System.Data en System.Xml.
Als u dit voorbeeld wilt bouwen en uitvoeren, plakt u de code in het codebestand Form1 in een nieuw Windows Forms-project. Zie Bouwen vanaf de opdrachtregel met csc.exe of Bouwen vanaf de opdrachtregelvoor informatie over het bouwen vanaf de C#- of Visual Basic-opdrachtregel.
Vul de variabele connectionString in het voorbeeld in met de waarden voor de voorbeelddatabaseverbinding northwind SQL Server. Windows-verificatie, ook wel geïntegreerde beveiliging genoemd, is een veiligere manier om verbinding te maken met de database dan het opslaan van een wachtwoord in de verbindingsreeks. Zie Verbindingsgegevens beveiligenvoor meer informatie over verbindingsbeveiliging.
using System;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Windows.Forms;
namespace WindowsFormsApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
public class Form1 : Form
{
private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
private SqlDataAdapter dataAdapter = new SqlDataAdapter();
private Button reloadButton = new Button();
private Button submitButton = new Button();
[STAThread()]
public static void Main()
{
Application.Run(new Form1());
}
// Initialize the form.
public Form1()
{
dataGridView1.Dock = DockStyle.Fill;
reloadButton.Text = "Reload";
submitButton.Text = "Submit";
reloadButton.Click += new EventHandler(ReloadButton_Click);
submitButton.Click += new EventHandler(SubmitButton_Click);
FlowLayoutPanel panel = new FlowLayoutPanel
{
Dock = DockStyle.Top,
AutoSize = true
};
panel.Controls.AddRange(new Control[] { reloadButton, submitButton });
Controls.AddRange(new Control[] { dataGridView1, panel });
Load += new EventHandler(Form1_Load);
Text = "DataGridView data binding and updating demo";
}
private void GetData(string selectCommand)
{
try
{
// Specify a connection string.
// Replace <SQL Server> with the SQL Server for your Northwind sample database.
// Replace "Integrated Security=True" with user login information if necessary.
String connectionString =
"Data Source=<SQL Server>;Initial Catalog=Northwind;" +
"Integrated Security=True";
// Create a new data adapter based on the specified query.
dataAdapter = new SqlDataAdapter(selectCommand, connectionString);
// Create a command builder to generate SQL update, insert, and
// delete commands based on selectCommand.
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
// Populate a new data table and bind it to the BindingSource.
DataTable table = new DataTable
{
Locale = CultureInfo.InvariantCulture
};
dataAdapter.Fill(table);
bindingSource1.DataSource = table;
// Resize the DataGridView columns to fit the newly loaded content.
dataGridView1.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
}
catch (SqlException)
{
MessageBox.Show("To run this example, replace the value of the " +
"connectionString variable with a connection string that is " +
"valid for your system.");
}
}
private void Form1_Load(object sender, EventArgs e)
{
// Bind the DataGridView to the BindingSource
// and load the data from the database.
dataGridView1.DataSource = bindingSource1;
GetData("select * from Customers");
}
private void ReloadButton_Click(object sender, EventArgs e)
{
// Reload the data from the database.
GetData(dataAdapter.SelectCommand.CommandText);
}
private void SubmitButton_Click(object sender, EventArgs e)
{
// Update the database with changes.
dataAdapter.Update((DataTable)bindingSource1.DataSource);
}
}
Imports System.Data.SqlClient
Imports System.Windows.Forms
Public Class Form1
Inherits Form
Private dataGridView1 As New DataGridView()
Private bindingSource1 As New BindingSource()
Private dataAdapter As New SqlDataAdapter()
Private WithEvents ReloadButton As New Button()
Private WithEvents SubmitButton As New Button()
Public Shared Sub Main()
Application.Run(New Form1())
End Sub
' Initialize the form.
Public Sub New()
dataGridView1.Dock = DockStyle.Fill
ReloadButton.Text = "Reload"
SubmitButton.Text = "Submit"
Dim panel As New FlowLayoutPanel With {
.Dock = DockStyle.Top,
.AutoSize = True
}
panel.Controls.AddRange(New Control() {ReloadButton, SubmitButton})
Controls.AddRange(New Control() {dataGridView1, panel})
Text = "DataGridView data binding and updating demo"
End Sub
Private Sub GetData(ByVal selectCommand As String)
Try
' Specify a connection string.
' Replace <SQL Server> with the SQL Server for your Northwind sample database.
' Replace "Integrated Security=True" with user login information if necessary.
Dim connectionString As String =
"Data Source=<SQL Server>;Initial Catalog=Northwind;" +
"Integrated Security=True;"
' Create a new data adapter based on the specified query.
dataAdapter = New SqlDataAdapter(selectCommand, connectionString)
' Create a command builder to generate SQL update, insert, and
' delete commands based on selectCommand.
Dim commandBuilder As New SqlCommandBuilder(dataAdapter)
' Populate a new data table and bind it to the BindingSource.
Dim table As New DataTable With {
.Locale = Globalization.CultureInfo.InvariantCulture
}
dataAdapter.Fill(table)
bindingSource1.DataSource = table
' Resize the DataGridView columns to fit the newly loaded content.
dataGridView1.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader)
Catch ex As SqlException
MessageBox.Show("To run this example, replace the value of the " +
"connectionString variable with a connection string that is " +
"valid for your system.")
End Try
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
Handles Me.Load
' Bind the DataGridView to the BindingSource
' and load the data from the database.
dataGridView1.DataSource = bindingSource1
GetData("select * from Customers")
End Sub
Private Sub ReloadButton_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles ReloadButton.Click
' Reload the data from the database.
GetData(dataAdapter.SelectCommand.CommandText)
End Sub
Private Sub SubmitButton_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles SubmitButton.Click
' Update the database with changes.
dataAdapter.Update(CType(bindingSource1.DataSource, DataTable))
End Sub
End Class
Zie ook
.NET Desktop feedback