Практическое руководство. Навигация по набору данных, отображаемых в форме Windows Forms
Самый простой способ перемещения по записям в источнике данных в приложении Windows, является привязка BindingSource компонент источника данных, а затем привязать элементы управления к BindingSource. Затем можно использовать встроенные методы навигации на BindingSource таких MoveNext, MoveLast, MovePrevious и MoveFirst. С помощью этих методов настроит Position и Current свойства BindingSource соответствующим образом. Можно также найти элемент и задать его в качестве текущего элемента, задав Position свойство.
Увеличение позиции в источнике данных
Задайте Position свойство BindingSource связанных данных в позиции записи, чтобы перейти к. В следующем примере демонстрируется использование MoveNext метод BindingSource для увеличения значения Position свойство при
nextButton
нажатии. BindingSource Связан сCustomers
набора данныхNorthwind
.Note
Установка Position значение за пределами первой или последней записи не приведет к ошибке, как .NET Framework не позволит вам задать положение значения, выходящего за границы списка. Если важно знать, достигнута ли первой или последней записи приложения, добавьте логику для проверки превышения количества элементов данных.
private void nextButton_Click(object sender, System.EventArgs e) { this.customersBindingSource.MoveNext(); }
Чтобы проверить, является ли начало или конец
Создайте обработчик событий для события PositionChanged. В обработчике вы можете протестировать значение предлагаемом месте превысил количество элементов фактические данные.
В следующем примере показано, как вы можете протестировать достижения последнего элемента данных. В примере, если вы находитесь в последнего элемента Далее будет отключена кнопка в форме.
Note
Имейте в виду, что при изменении списка, при перемещении в коде, необходимо включить Далее кнопку, чтобы пользователи могли просматривать всю длину нового списка. Кроме того, следует помнить, указанных выше PositionChanged событий для конкретного BindingSource вы работаете с должно быть связано со своим методом обработки событий. Ниже приведен пример метода обработки PositionChanged событий:
void customersBindingSource_PositionChanged(object sender, EventArgs e) { if (customersBindingSource.Position == customersBindingSource.Count - 1) nextButton.Enabled = false; else nextButton.Enabled = true; }
Чтобы найти элемент и задать его в качестве текущего элемента
Найдите запись, которую вы хотите задать в качестве текущего элемента. Это можно сделать с помощью Find метод BindingSource, если источник данных реализует IBindingList. Вот некоторые примеры данных источников, реализующие IBindingList являются BindingList<T> и DataView.
void findButton_Click(object sender, EventArgs e) { int foundIndex = customersBindingSource.Find("CustomerID", "ANTON"); customersBindingSource.Position = foundIndex; }