Практическое руководство. Сортировка и фильтрация данных ADO.NET с помощью компонента BindingSource в Windows Forms

Обновлен: Ноябрь 2007

Возможности сортировки и фильтрации элемента управления BindingSource можно предоставить приложениям с помощью свойств Sort и Filter. Если базовый источник данных представляет собой IBindingList, может использоваться простая сортировка; если же источник данных представляет собой IBindingListView, может использоваться фильтрация и расширенная сортировка. Свойство Sort требует использования стандартного синтаксиса ADO.NET: строка, представляющая собой имя столбца данных в источнике данных, после которой ставится ASC или DESC для указания на порядок сортировки списка по возрастанию или убыванию. При задании расширенной сортировки или сортировки по нескольким столбцам столбцы отделяются запятыми-разделителями. Свойство Filter принимает в качестве значения строковое выражение.

ya3sah92.alert_note(ru-ru,VS.90).gifПримечание.

Хранение в строке подключения конфиденциальных сведений, таких как пароль, может привести к снижению уровня защиты приложения. Использование проверки подлинности Windows (также называемой встроенными средствами безопасности) — более безопасный способ управления доступом к базе данных. Дополнительные сведения см. в разделе Защита сведений о соединении (ADO.NET).

Фильтрация данных с помощью BindingSource

  • Присвойте свойству Filter в качестве значения необходимое выражение.

    В следующем примере кода выражение представляет собой имя столбца, после которого указано требуемое для столбца значение.

BindingSource1.Filter = "ContactTitle='Owner'"
         BindingSource1.Filter = "ContactTitle='Owner'";

Сортировка данных с помощью BindingSource

  1. Присвойте свойству Sort в качестве значения необходимое имя столбца, после которого укажите ASC или DESC, чтобы задать порядок сортировки по возрастанию или убыванию.

  2. Несколько столбцов разделяются запятыми.

BindingSource1.Sort = "Country DESC, Address ASC"
         BindingSource1.Sort = "Country DESC, Address ASC";

Пример

В следующем примере кода производится загрузка данных из таблицы "Customers" демонстрационной базы данных "Northwind" в элемент управления DataGridView с последующей фильтрацией и сортировкой отображаемых данных.

Private Sub InitializeSortedFilteredBindingSource()

    ' Create the connection string, data adapter and data table.
    Dim connectionString As New SqlConnection("Initial Catalog=Northwind;" & _
        "Data Source=localhost;Integrated Security=SSPI;")
    Dim customersTableAdapter As New SqlDataAdapter("Select * from Customers", _
        connectionString)
    Dim customerTable As New DataTable()

    ' Fill the the adapter with the contents of the customer table.
    customersTableAdapter.Fill(customerTable)

    ' Set data source for BindingSource1.
    BindingSource1.DataSource = customerTable

    ' Filter the items to show contacts who are owners.
    BindingSource1.Filter = "ContactTitle='Owner'"
    ' Sort the items on the company name in descending order.
    BindingSource1.Sort = "Country DESC, Address ASC"

    ' Set the data source for dataGridView1 to BindingSource1.
    dataGridView1.DataSource = BindingSource1


End Sub

        private void InitializeSortedFilteredBindingSource()
        {
            // Create the connection string, data adapter and data table.
            SqlConnection connectionString =
                 new SqlConnection("Initial Catalog=Northwind;" +
                 "Data Source=localhost;Integrated Security=SSPI;");
            SqlDataAdapter customersTableAdapter =
                new SqlDataAdapter("Select * from Customers", connectionString);
            DataTable customerTable = new DataTable();

            // Fill the the adapter with the contents of the customer table.
            customersTableAdapter.Fill(customerTable);

            // Set data source for BindingSource1.
            BindingSource1.DataSource = customerTable;

            // Filter the items to show contacts who are owners.
            BindingSource1.Filter = "ContactTitle='Owner'";

            // Sort the items on the company name in descending order.
            BindingSource1.Sort = "Country DESC, Address ASC";

            // Set the data source for dataGridView1 to BindingSource1.
            dataGridView1.DataSource = BindingSource1;

        }

Компиляция кода

Для выполнения кода данного примера скопируйте его в форму, содержащую элемент управления BindingSource с именем BindingSource1 и элемент управления DataGridView с именем dataGridView1. Создайте обработчик событий Load для формы и вызовите InitializeSortedFilteredBindingSource в методе обработчика событий загрузки.

См. также

Задачи

Практическое руководство. Установка образцов баз данных

Ссылки

Sort

Filter

Другие ресурсы

Компонент BindingSource