Опубликован: 31.08.2006 | Доступ: свободный | Студентов: 3975 / 230 | Оценка: 4.14 / 3.89 | Длительность: 39:16:00
ISBN: 978-5-9570-0021-3
Лекция 20:

Введение в ADO.NET

Создание элементов управления для навигации

Сейчас программа ADO Form отображает имя первого инструктора из базы данных Students.mdb. Но как просмотреть список имен инструкторов, и как переходить к первой или последней записи базы данных? ADO.NET хранит информацию о текущей записи и общем числе записей с помощью объекта, который называется CurrencyManager. Для каждого набора данных существует объект CurrencyManager, и каждая форма Windows имеет объект BindingContext, который хранит все объекты CurrencyManager формы.

В следующем упражнении вы создадите в программе ADO Form объекты кнопок с именами Первая запись, Последняя запись, Предыдущая запись и Следующая запись, которые предоставляют пользователю базовые возможности навигации по базе данных. После того, как вы создадите в форме эти кнопки, вы добавите в каждую процедуру события Click этих кнопок код программы, который с помощью объекта BindingContext, набора данных DsInstructors1 и таблицы Instructors отображает соответствующую запись базы данных. Вы также можете настроить этот код программы так, чтобы он соответствовал вашим нуждам, просто заменив имена набора данных и таблицы на значения из вашей собственной структуры базы данных.

Добавление кнопок Первая запись, Последняя запись, Предыдущая запись и Следующая запись

  1. Отобразите интерфейс пользователя ADO Form, а затем используйте элемент управления Button и создайте в вашей форме четыре объекта кнопок. Добавьте два объекта кнопок в центре формы, а два в нижней части формы.
  2. Установите для этих объектов кнопок следующие свойства:

    Объект Свойство Установка
    Button1 Name btnFirst
    Text Первая запись
    Button2 Name btnLast
    Text Последняя запись
    Button3 Name btnPrev
    Text Предыдущая запись
    Button4 Name btnNext
    Text Следующая запись

    Ваша форма должна выглядеть примерно так.


    Теперь добавьте код программы, который добавляет навигационные функции для кнопок.

  3. Сделайте двойной щелчок мышью на кнопке Первая запись. В Редакторе кода появится процедура события btnFirst_Click.
  4. Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position = 0

    Эта запись предназначена для использования объекта BindingContext для отображения первой записи из набора данных DsInstructors1 таблицы Instructors. Этот оператор программы устанавливает свойство Position на значение 0, что приводит к изменению текущей записи в наборе данных на первую запись. (Аналогично массивам и коллекциям, наборы данных начинают нумерацию записей с 0.) Также обратите внимание на использование объекта Me, который указывает на объект BindingContext для текущей формы.

  5. Отобразите форму, а затем дважды щелкните мышью на кнопке Последняя запись. В Редакторе кода появится процедура события btnLast_Click.
  6. Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position = _
    Me.BindingContext(DsInstructors1, "Instructors").Count - 1

    Этот длинный оператор (разделенный на две строки) приводит к тому, что в форме отображается последняя запись из набора данных. Это вариант предыдущего оператора BindingContext, но вместо установки свойства Position на значение 0, этот оператор устанавливает текущую запись на значение, хранящееся в свойстве Count минус 1. Count - это общее число записей в наборе данных. Единица вычитается из-за того, что нумерация записей начинается с 0.

  7. Отобразите форму, а затем сделайте двойной щелчок мышью на кнопке Предыдущая запись. В Редакторе кода появится процедура события btnPrev_Click.
  8. Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position -= 1

    Этот оператор отображает предыдущую запись из набора данных, вычитая 1 из текущей записи. Хотя этот оператор не имеет смысла, если текущая запись уже равна 0, она не приведет к возникновению синтаксической ошибки - ADO.NET не позволит текущей записи иметь номер меньше 0. Обратите внимание на использование в этом операторе синтаксиса -= для декремента свойства Position. Это сокращенная математическая запись, которую я впервые представил при декрементировании переменных в "Переменные и операторы Visual Basic .NET" .

  9. Отобразите форму, а затем дважды щелкните мышью на кнопке Следующая запись. В Редакторе кода появится процедура события btnNext_Click.
  10. Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position += 1

    Этот оператор инкрементирует свойство Position для отображения следующей записи из набора данных. Заметьте, что для обновления свойства Position с помощью минимального количества кода программы я использовал здесь математический оператор +=. Теперь вы запустите обновленную программу и протестируете кнопки навигации, только что созданные вами.

  11. Щелкните на кнопке Start (Начать) стандартной панели инструментов. Программа запустится на выполнение в среде разработки.
  12. Чтобы заполнить текстовое поле формы именем первого инструктора из набора данных, щелкните на кнопке Загрузка данных.
  13. Чтобы отобразить следующую запись из базы данных, щелкните на кнопке Следующая запись. Ваша форма будет выглядеть примерно так.


  14. Чтобы снова отобразить первую запись, щелкните на кнопке Предыдущая запись.
  15. Чтобы просмотреть несколько имен инструкторов из списка, щелкните на кнопке Следующая запись несколько раз
  16. Чтобы отобразить первую запись набора данных, щелкните на кнопке Первая запись.
  17. Чтобы отобразить последнюю запись набора данных, щелкните на кнопке Последняя запись. Обратите внимание, что программа не выдает ошибки, если вы отображаете последнюю запись, а затем щелкаете на Следующая запись. Кроме того, программа не выдает ошибки, если вы отображаете первую запись, а затем щелкаете на Предыдущая запись. Эта обработка ошибок встроена в объект BindingContext.
  18. Чтобы завершить выполнение программы, щелкните на кнопке Закрыть формы.
Сайдахмад Зарипов
Сайдахмад Зарипов
Жанболат Шаймерден
Жанболат Шаймерден

Можно ли выбирать язык для надписей и команд в среде разработки?