Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kontrol DataGridView mendukung model pengikatan data Windows Forms standar, sehingga dapat mengikat ke berbagai sumber data. Biasanya, Anda terkait dengan BindingSource yang mengelola interaksi dengan sumber data. BindingSource dapat berupa sumber data Windows Forms apa pun, yang memberi Anda fleksibilitas besar saat memilih atau memodifikasi lokasi data Anda. Untuk informasi selengkapnya tentang sumber data yang didukung kontrol DataGridView, lihat gambaran umum kontrol DataGridView.
Visual Studio memiliki dukungan ekstensif untuk pengikatan data ke kontrol DataGridView. Untuk informasi selengkapnya, lihat Cara: Mengikat data ke kontrol Windows Forms DataGridView menggunakan perancang.
Untuk menyambungkan kontrol DataGridView ke data:
Terapkan metode untuk menangani detail pengambilan data. Contoh kode berikut menerapkan metode
GetData
yang menginisialisasi SqlDataAdapter, dan menggunakannya untuk mengisi DataTable. Kemudian mengikat DataTable ke BindingSource.Dalam penanganan aktivitas Load formulir, ikat kontrol DataGridView ke BindingSource, dan panggil metode
GetData
untuk mengambil data.
Contoh
Contoh kode lengkap ini mengambil data dari database untuk mengisi kontrol DataGridView dalam formulir Windows. Formulir ini juga memiliki tombol untuk memuat ulang data dan mengirimkan perubahan ke database.
Contoh ini memerlukan:
Akses ke database sampel Northwind SQL Server. Untuk informasi selengkapnya tentang menginstal database sampel Northwind, lihat Mendapatkan database sampel untuk sampel kode ADO.NET.
Referensi ke assembly System, System.Windows.Forms, System.Data, dan System.Xml.
Untuk membuat dan menjalankan contoh ini, tempelkan kode ke dalam file kode Form1 dalam proyek Windows Forms baru. Untuk informasi tentang membangun dari baris perintah C# atau Visual Basic, lihat Penyusunan dari baris perintah dengan csc.exe atau Penyusunan dari baris perintah.
Isi variabel connectionString
dalam contoh dengan nilai untuk koneksi database sampel Northwind SQL Server Anda. Autentikasi Windows, juga disebut keamanan terintegrasi, adalah cara yang lebih aman untuk menyambungkan ke database daripada menyimpan kata sandi dalam string koneksi. Untuk informasi selengkapnya tentang keamanan koneksi, lihat Melindungi informasi koneksi.
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
Lihat juga
- DataGridView
- DataGridView.DataSource
- BindingSource
- Menampilkan data di kontrol Windows Forms DataGridView
- Melindungi informasi koneksi
.NET Desktop feedback