Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il controllo DataGridView supporta il modello standard di data binding di Windows Forms, così può collegarsi a un'ampia gamma di origini dati. In genere, si effettua il binding a un BindingSource che gestisce l'interazione con la sorgente dati. Il BindingSource può essere qualsiasi origine dati Windows Forms, che offre grande flessibilità nella scelta o nella modifica della posizione dei dati. Per altre informazioni sulle origini dati supportate dal controllo DataGridView, vedere panoramica controllo DataGridView.
Visual Studio offre un ampio supporto per il data binding al controllo DataGridView. Per altre informazioni, vedere Procedura: Associare dati al controllo DataGridView di Windows Forms utilizzando il Designer.
Per connettere un controllo DataGridView ai dati:
Implementare un metodo per gestire i dettagli del recupero dei dati. Nell'esempio di codice seguente viene implementato un metodo
GetDatache inizializza un SqlDataAdaptere lo usa per popolare un DataTable. Associa quindi il DataTable al BindingSource.Nel gestore eventi Load del modulo, allega il controllo DataGridView a BindingSourcee chiama il metodo
GetDataper recuperare i dati.
Esempio
Questo esempio di codice completo recupera i dati da un database per popolare un controllo DataGridView in un Windows Form. Il modulo include anche pulsanti per ricaricare i dati e inviare modifiche al database.
Questo esempio richiede:
Accesso a un database di esempio di Northwind SQL Server. Per ulteriori informazioni sull'installazione del database di esempio Northwind, vedere Ottenere i database di esempio per i codici di esempio di ADO.NET.
Riferimenti agli assembly System, System.Windows.Forms, System.Data e System.Xml.
Per compilare ed eseguire questo esempio, incollare il codice nel file di codice Form1 in un nuovo progetto Windows Form. Per informazioni sulla compilazione dalla riga di comando di C# o Visual Basic, vedere compilazione da riga di comando con csc.exe o Compilazione dalla riga di comando.
Popolare la variabile connectionString nell'esempio con i valori per la connessione al database di esempio Northwind SQL Server. L'autenticazione di Windows, detta anche sicurezza integrata, è un modo più sicuro per connettersi al database rispetto all'archiviazione di una password nella stringa di connessione. Per altre informazioni sulla sicurezza delle connessioni, vedere Proteggere le informazioni di connessione.
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
Vedere anche
.NET Desktop feedback