Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка клиент-серверного приложения.ЛР 5 -...docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
982 Кб
Скачать
☆

Этап 8. Связывание полей таблицы с элементами управления

Многие элементы управления Windows Forms обладают свойствами и методами, позволяющими связывать их содержимое с отдельными полями таблицы базы данных. Это значит, что в них может быть произведено чтение из таблицы базы данных и наоборот, запись в таблицу.

Рассмотрим некоторые из таких компонентов.

TextBox − может служить для отображения любых данных, которые могут быть представлены в виде текста (в т. ч. числовых данных и полей с датой/временем). Для связи с полем таблицы служит свойство (DataBindings)->Text. Для данных, от которых требуется соответствие определённому формату (например, номер телефона), можно использовать компонент MaskedTextBox, который также позволяет задавать маску ввода.

NumericUpDown (рис. 22) − служит для представления числовых данных. Свойство для связи с данными − (DataBindings)->Value.

  1. Компонент NumericUpDown

DateTimePicker (рис. 23) − отображает поля с датами. Свойство для связи с данными − (DataBindings)->Value.

  1. Компонент DateTimePicker

PictureBox − отображает графические изображения из полей типа image. Свойство для связи с данными − (DataBindings)->Image.

Если требуется отобразить в виде списка данные из таблицы, на которую ссылается внешний ключ из текущей таблицы, используется компонент «ComboBox» (рис. 24).

  1. Компонент ComboBox

Рассмотрим использование данного компонента на примере.

Предположим, нам нужно, чтобы в «ComboBox» по полю «id_client» таблицы заказов отображалась фамилия клиента, сделавшего выбранный заказ в таблице заказов.

ComboBox − (DataBindings)->SelectedValue − значение текущего элемента. В данном случае − ordersWfiobindingSource -> id_client (номер клиента из таблицы заказов);

DataSource − источник данных. В данном случае − таблица «Clients», где хранится фамилия клиента и его номер (id_client);

DisplayMember − поле для отображения. В данном случае − поле «last_name» (фамилия клиента) таблицы «Clients»;

ValueMember − поле значения. Поле источника данных, по которому будет осуществляться сравнение с полем «SelectedValue» для определения того элемента списка, чьё поле, указанное в свойстве «DisplayValue», должно отображаться в данный момент. В данном случае − поле «id_client» таблицы «Clients».

Обратите внимание, что для того, чтобы все описанные элементы управления отображали данные той записи, которая в данный момент выбрана в DataGridView, их нужно связывать с тем же объектом класса «BindingSource», который использует таблица.

Этап 9. Поиск (фильтрация данных)

При работе с приложением у пользователя может возникнуть потребность найти данные по определённому признаку (полю) или набору полей. Для этого достаточно применить фильтр (строку с условием отбора) к нужной таблице. Чтобы применить фильтр, используется свойство Filter соответствующего таблице объекта BindingSource. Фильтр имеет схожий с языком SQL синтаксис за исключением того, что в нём не могут использоваться функции СУБД (такие, как RTRIM()) и ссылки на поля других таблиц. Для отбора можно указать сразу несколько условий, объединив их операторами and или or.

Для того чтобы сбросить фильтр, достаточно присвоить свойству Filter пустую строку.

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

Пример 1. Реализуем поиск в представлении «ordersWfio» по полю «fio» (фамилия и инициалы). Для этого разместим на главной форме элемент управления TextBox (назовём его «textClientFlt») и в обработчике события TextChanged напишем следующий код:

this.ordersWfioBindingSource.Filter = "fio like " + "'" + this.textClientFlt.Text + "%'";

После того, как пользователь введёт в текстовое поле фамилию и инициалы интересующего его клиента, в таблице будут показаны только заказы, сделанные соответствующим клиентом.

Пример 2. В этом же представлении отберём только заказы, сделанные в определённую дату. Поместим на главную форму элемент управления DateTimePicker (присвоим ему имя «dateSold») и напишем код для обработчика события ValueChanged:

this.ordersWfioBindingSource.Filter = "date_sold = '" + this.dateSold.Value.ToShortDateString() + "'";

После того, как в элементе управления будет выбрана некая дата, таблица заказов будет отфильтрована таким образом, чтобы отображались только заказы, сделанные в указанный день.