Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
DataGridView-kontrollen stöder standardmodellen för Databindning i Windows Forms, så att den kan binda till en mängd olika datakällor. Vanligtvis binder du till en BindingSource som hanterar interaktionen med datakällan. BindingSource kan vara valfri Windows Forms-datakälla, vilket ger dig stor flexibilitet när du väljer eller ändrar dina datas plats. Mer information om datakällor som DataGridView-kontrollen stöder finns i DataGridView-kontrollöversikten.
Visual Studio har omfattande stöd för databindning till DataGridView-kontrollen. Mer information finns i Så här: Binda data till Windows Forms DataGridView-kontrollen med hjälp av Designer.
Så här ansluter du en DataGridView-kontroll till data:
Implementera en metod för att hantera information om hur du hämtar data. I följande kodexempel implementeras en
GetData-metod som initierar en SqlDataAdapteroch använder den för att fylla i en DataTable. Sedan binder den DataTable till BindingSource.I formulärets Load händelsehanterare binder du DataGridView-kontrollen till BindingSourceoch anropar metoden
GetDataför att hämta data.
Exempel
Det här fullständiga kodexemplet hämtar data från en databas för att fylla i en DataGridView-kontroll i ett Windows-formulär. Formuläret har också knappar för att läsa in data igen och skicka ändringar till databasen.
Det här exemplet kräver:
Åtkomst till en Northwind SQL Server-exempeldatabas. Mer information om hur du installerar Northwind-exempeldatabasen finns i Hämta exempeldatabaserna för ADO.NET kodexempel.
Referenser till sammansättningarna System, System.Windows.Forms, System.Data och System.Xml.
Om du vill skapa och köra det här exemplet klistrar du in koden i kodfilen Form1 i ett nytt Windows Forms-projekt. Information om kommandoradsskapande med C# eller Visual Basic finns i kommandoradsskapande med csc.exe eller Skapa från kommandoraden.
Fyll i variabeln connectionString i exemplet med värdena för din Northwind SQL Server-exempeldatabasanslutning. Windows-autentisering, även kallat integrerad säkerhet, är ett säkrare sätt att ansluta till databasen än att lagra ett lösenord i anslutningssträngen. Mer information om anslutningssäkerhet finns i Skydda anslutningsinformation.
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
Se även
.NET Desktop feedback