Практическое руководство. Привязка данных к элементу управления Windows Forms DataGridView
DataGridView Элемент управления поддерживает стандартную Windows Forms модель привязки данных, поэтому его можно привязать к различным источникам данных. Как правило, можно выполнить привязку к BindingSource , управляет взаимодействием с источником данных. BindingSource Может быть любой источник данных Windows Forms, который обеспечивает большую гибкость при выборе или изменении расположения ваших данных. Дополнительные сведения об источниках данных DataGridView управления поддерживает, см. в разделе Обзор элемента управления DataGridView.
Visual Studio имеет расширенную поддержку привязки данных к элементу управления DataGridView. Дополнительные сведения см. в разделе Как Привязка данных к элементу управления Windows Forms DataGridView, с помощью конструктора.
Для подключения элемента управления DataGridView к данным:
Реализуйте метод для обработки сведения о получении данных. В следующем коде реализуется пример
GetData
метод, который инициализирует SqlDataAdapterи использует его для заполнения DataTable. Затем он выполняет привязку DataTable для BindingSource.В форме Load обработчик событий, привязка DataGridView управления BindingSourceи вызовите
GetData
метод для извлечения данных.
Пример
Это полный пример кода извлекает данные из базы данных для заполнения элемента управления DataGridView в форме Windows. В форме также находятся кнопки, чтобы перезагрузить данные и отправить изменения в базу данных.
Для этого примера требуются:
Доступ на образец базы данных "Борей" SQL Server. Дополнительные сведения об установке образца базы данных "Борей" см. в разделе получить образцы баз данных, примеры кода ADO.NET.
Ссылки на сборки System, System.Windows.Forms, System.Data и System.Xml.
Чтобы построить и запустить этот пример, вставьте код в Form1 файл кода в новый проект Windows Forms. Сведения о сборке из C# или командной строки Visual Basic, см. в разделе сборка с помощью csc.exe из командной строки или построения из командной строки.
Заполнение connectionString
переменных в примере со значениями пример подключения к базе данных "Борей" SQL Server. Проверка подлинности Windows, также называемый встроенная безопасность является более безопасный способ подключения к базе данных, чем хранение пароля в строке подключения. Дополнительные сведения о безопасности подключения, см. в разделе Защита сведений о подключении.
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);
}
}