Прочитать на английском

Поделиться через


DataGridView.DataSource Свойство

Определение

Получает или задает источник данных, для которого объект DataGridView отображает данные.

public object DataSource { get; set; }
public object? DataSource { get; set; }

Значение свойства

Объект, содержащий данные, отображаемые в объекте DataGridView.

Исключения

Произошла ошибка в источнике данных, и нет обработчика для события DataError, или обработчик задал для свойства ThrowException значение true. Объект исключения обычно можно привести к типу FormatException.

Примеры

В следующем примере кода показано, как инициализировать простой объект с привязкой к DataGridViewданным . Здесь также показано, как задать DataSource свойство .

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Drawing;

public class Form1 : System.Windows.Forms.Form
{
    private DataGridView dataGridView1 = new DataGridView();
    private BindingSource bindingSource1 = new BindingSource();

    public Form1()
    {
        dataGridView1.Dock = DockStyle.Fill;
        this.Controls.Add(dataGridView1);
        InitializeDataGridView();
    }

    private void InitializeDataGridView()
    {
        try
        {
            // Set up the DataGridView.
            dataGridView1.Dock = DockStyle.Fill;

            // Automatically generate the DataGridView columns.
            dataGridView1.AutoGenerateColumns = true;

            // Set up the data source.
            bindingSource1.DataSource = GetData("Select * From Products");
            dataGridView1.DataSource = bindingSource1;

            // Automatically resize the visible rows.
            dataGridView1.AutoSizeRowsMode =
                DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;

            // Set the DataGridView control's border.
            dataGridView1.BorderStyle = BorderStyle.Fixed3D;

            // Put the cells in edit mode when user enters them.
            dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
        }
        catch (SqlException)
        {
            MessageBox.Show("To run this sample replace connection.ConnectionString" +
                " with a valid connection string to a Northwind" +
                " database accessible to your system.", "ERROR",
                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            System.Threading.Thread.CurrentThread.Abort();
        }
    }

    private static DataTable GetData(string sqlCommand)
    {
        string connectionString = "Integrated Security=SSPI;" +
            "Persist Security Info=False;" +
            "Initial Catalog=Northwind;Data Source=localhost";

        SqlConnection northwindConnection = new SqlConnection(connectionString);

        SqlCommand command = new SqlCommand(sqlCommand, northwindConnection);
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = command;

        DataTable table = new DataTable();
        table.Locale = System.Globalization.CultureInfo.InvariantCulture;
        adapter.Fill(table);

        return table;
    }

    [STAThreadAttribute()]
    public static void Main()
    {
        Application.Run(new Form1());
    }
}

Комментарии

Класс DataGridView поддерживает стандартную модель привязки данных Windows Forms. Это означает, что источник данных может иметь любой тип, реализующий один из следующих интерфейсов:

Конкретные примеры см. в разделе Пример и таблице задач в конце этого раздела.

Обычно выполняется привязка к компоненту BindingSource, а затем компонент BindingSource привязывается к другому источнику данных или заполняется бизнес-объектами. Компонент BindingSource является предпочтительным источником данных, так как он может выполнять привязку к широкому спектру источников данных и может автоматически устранять множество проблем с привязкой данных.

При привязке к источнику данных, содержащему несколько списков или таблиц, необходимо задать DataMember для свойства строку, задающую список или таблицу для привязки. Однако при привязке к компоненту BindingSource , содержащему DataMember несколько списков или таблиц, можно задать свойство BindingSource компонента.

При привязке к коллекции объектов, а не к данным базы данных, обычно присваивается DataSourceNullValue свойству null объекта , возвращаемому свойствомDefaultCellStyle, значение , а не значение DBNull.Valueпо умолчанию , которое подходит для данных базы данных.

Дополнительные сведения см. в разделе Отображение данных в элементе управления Windows Forms DataGridView. В следующей таблице приведены прямые ссылки на распространенные задачи, связанные со свойством DataSource .

См. статьи Пошаговое руководство. Создание основной и подробной формы с использованием двух элементов управления DataGridView Windows Forms и Практическое руководство. Привязка объектов к Windows Forms элементам управления DataGridView.

Применяется к

Продукт Версии
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

См. также раздел