Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 230

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 224 225 226 227 228 229 < 230 > 231 232 233 234 235 236 .. 404 >> Следующая


CuJfount! IS

-.-I

QiKswm :<t'ft

.:Г

Cott-wflon*

Г

.., ¦ ¦

_______________ ____________________ ¦

Перемещение по объекту DataSet

Мы добились вывода на экран первой записи, но пользователям может потребоваться увидеть следующую запись, И можно биться об заклад, что, увидев вторую запись, они захотят посмотреть третью. И нет никаких сомнений в том, что на этом они не остановятся!

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

Добавьте в форму объекты, входящие в таблицу слева.

Управляющий элемент Свойство Значение
Кнопка Name cmdBack
Text Back
Кнопка Name cmdNext
Text Next

В результате ваших действий упомянутая форма должна принять вид, подобный изображенному на рисунке справа.

Щелкните мышью два раза на кнопке cmdNext и добавьте следующий код в обработчик событий click:

private void cmdNext_Clic)c(object sender, System,EventArge e)

. Eue-sflieiD

:< ¦

¦ > * i ¦«, **Г m „ШШ-, ¦ ww - i j p ¦ »

.1 :i : . : - . . \ "

Cuhhit# l;.v-

... I

¦ * -

I

.j:;..1..-;

.tMK | ^ . I

¦ ¦ ¦ ¦ ¦ ' ¦ ¦

¦ . . . ¦ w ¦ 1

// Переход x следующей записи в объекте DataSet из таблицы Juot^roere thla.BiudinffContext [thia.dflCustoroersi, ¦Customers*),Position*+;
496 Глава 18

В этом коде для изменения текущей позиции используется объект Bind.ingContext. Любая форма Windows обладает объектом aindingcontext, который осуществляет контроль за всеми управляющими элементами данной формы; Увеличивая на единицу СВОЙСТВО Position объекта BindingContext для таблицы Customers нашего объекта DataSet, мы переходим к очередной записи в таблице, что приводит к выводу новых данных во всех текстовых окнах.

Аналогичным образом можно осуществлять движение и в обратном направлении, Введите следующий код для обработки события Click для кнопки cmdBack:

private void cmdBacl(_Cliclc (object sender. System.EventArgs e)

(

// Переход x предыдущей записи в объекте DataSet из таблицы Customers this.BindingContext[this.dsCustomeral,'Customers’].Position-;

>

Добавление списков

Добавить к форме окна со списками оказывается также просто, как и обычные текстовые окна. Добавьте к форме объект, описанный в таблице справа.

Узнав, как будет использоваться добавленное окно со списком для значений CustomeriD, пойдем еще дальше

Управляющий элемент Свойство Значение
Окно
со списком Name latCustID
DataSource dsCuBtomersl.Customers
DisplayMember CuBto-nerlD

и удалим текстовое окно Customer ID. В результате форма должна получить вид, подобный представленному на рисунке слева.

После этого сохраните приложение и запустите его,

Теперь у нас есть окно со списком, в котором выводятся все значения CustomeriD, имеющиеся в наборе данных. Выбор элементов списка не приводит к изменению положения указателя в BindingContext н, соответственно, к изменению данных, которые выводятся в текстовых окнах, Решение этой проблемы может показаться на первый взгляд весьма запутанным, однако оно является прекрасным примером объектно-ориентированного подхода к решению проблем.

Известно, что пользователю разрешается выбирать только один элемент списка, Семейства объекта обладают числовыми индексами. Каждый элемент списка представлен объектом, помещенным в окно со списком, и у каждого объекта имеется соответствующий численный номер. Если окно со списком будет заполняться записями в том же порядке, в каком они расположены в таблице Dataset, то численное значение индекса каждой записи будет совпадать с численными значениями индексов элементов списка. Кроме того, известно, что, для того чтобы переместить указатель в DataSet, необходимо указать новую позицию. Следовательно,

[^“-jDjtd_En<ifripr[; 1 HMH Aid
IstCustfD

¦
Centcliwt 1
1
.... .
Доступ к данным пользователя

497

еслн бы можно было передавать индекс выбранного элемента списка в DataSet, то появилась бы возможность передвигать указатель и выводить в текстовых окнах необходимую запись.

Такой подход оказывается вполне работоспособным, и первым обработчиком события, к которому мы получаем доступ в результате двойного щелчка мышью на окне со списком в процессе разработки программы, является обработчик событий SelectindexChanged, Это событие наступает в момент выбора элемента. Щелкните два раза мышью на текстовом окне и введите в обработчик событий следующий код:

private void lstCustID_SelectedlndexChanged(object sender. System.EventArgs e)

{ _

// Передача, объекту biiudingContext нового значения индекса this.BindingContextlthis.dsCustoinerBl,‘Customers'] .Position ” this.latCuetlD.Selectedlndexj

)

В этом случае также задается значение свойства position объекта Bindingcontext, однако, вместо того чтобы увеличивать или уменьшать текущее значение индекса на единицу, мы просто передаем индекс элемента списка, который выбран в окне.
Предыдущая << 1 .. 224 225 226 227 228 229 < 230 > 231 232 233 234 235 236 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.