Практическое руководство. Сортировка и фильтрация данных ADO.NET с помощью компонента BindingSource в Windows Forms
Вы можете добавить возможность сортировки и фильтрации для элемента управления BindingSource с помощью свойств Sort и Filter. Можно также применить простую сортировку, если базовый источник данных является IBindingList, а также можно применить фильтрацию и расширенную сортировку, если источник данных является IBindingListView. Для свойства Sort требуется стандартный синтаксис ADO.NET: строка, представляющая имя столбца данных в источнике данных, за которым следует ASC
или DESC
, чтобы указать, следует ли отсортировать список по возрастанию или по убыванию. Можно задать расширенную сортировку или сортировку по нескольким столбцам, разделив столбцы запятыми. Свойство Filter принимает строковое выражение.
Примечание.
Хранение конфиденциальных сведений (например, пароля) в строке подключения может повлиять на безопасность приложения. Использование проверки подлинности Windows (также называемой встроенными средствами безопасности) — более безопасный способ управления доступом к базе данных. Дополнительные сведения см. в разделе Защита сведений о подключении.
Фильтрация данных с помощью BindingSource
Задайте для свойства нужное выражение Filter.
В следующем примере кода выражение представляет собой имя столбца, за которым следует значение, выбранное для столбца.
BindingSource1.Filter = "ContactTitle='Owner'";
BindingSource1.Filter = "ContactTitle='Owner'"
Фильтрация данных с помощью BindingSource
Задайте в качестве значения свойства Sort имя выбранного столбца, за которым следует
ASC
илиDESC
(определяет, будет ли сортировка выполняться по возрастанию или по убыванию).Для разделения столбцов используйте запятые.
BindingSource1.Sort = "Country DESC, Address ASC";
BindingSource1.Sort = "Country DESC, Address ASC"
Пример
В следующем примере кода данные из таблицы Customers примера базы данных Northwind загружаются в элемент управления DataGridView, а также выполняется фильтрация и сортировка отображаемых данных.
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 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;
}
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 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
Компиляция кода
Для выполнения этого примера вставьте код в форму, которая содержит BindingSource с именем BindingSource1
и DataGridView с именем dataGridView1
. Обработайте событие Load для формы и вызовите InitializeSortedFilteredBindingSource
в методе обработчика событий загрузки.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по