• Microsoft .NET
  • ASP.NET
  • Создание динамического пользовательского интерфейса ASP.NET, управляемого данными

Создание динамического пользовательского интерфейса ASP.NET, управляемого данными - Редактирование и удаление клиентов

ОГЛАВЛЕНИЕ

Редактирование и удаление клиентов

В дополнение к элементу управления DetailsView страница ~/Customers/Default.aspx также включает в себя GridView, который перечисляет атрибуты клиентов. GridView перечисляет фиксированные атрибуты клиентов, и данные атрибуты редактируемы из интерфейса GridView. Когда запись о клиенте редактируется из GridView, то к базе данных посылается UpdateCommand элемента SqlDataSource. Выражение UPDATE, используемое тут, просто обновляет соответствующую запись в таблице Clients, оно не модифицирует специализированные атрибуты клиентов.

GridView также включает в себя возможность удаления клиентов. Выражение DELETE элемента SqlDataSource удаляет соответствующие записи из таблицы Clients. Если существуют какие-либо специализированные атрибуты, то будут также записи в таблице DynamicValuesForClients. При создании модели данных в первой статье данной серии, мы добавили внешний ключ между колонками Clients.ClientId и DynamicValuesForClients.ClientId, а также придали отношению возможность каскадного удаления. Если вы создавали на протяжении статьи веб-приложение, но не настроили возможность каскадного удаления, то вы вызовите исключительную ситуацию при удалении клиента, который обладает значениями специализированных атрибутов. Решить эту проблему можно путем настройки связи таким образом, чтобы вы получили возможность каскадного удаления, либо явно удалить соответствующие специализированные значения атрибутов до удаления записи клиента. Это можно выполнить посредством хранимой процедуры.

GridView позволяет посетителю только редактировать специализированные клиентские атрибуты. Чтобы иметь возможность управлять ими пользователь должен перейти на другую страницу. Для того, чтобы помочь ему в этом, я добавил поле гиперссылки (HyperLinkField) к GridView в качестве колонки справа. Поле обрабатывает гиперссылку ~/Customers/ClientCustomAttributes.aspx?ID=ClientID, где ClientID является значением ClientId колонки клиента, чьи специализированные атрибуты необходимо отредактировать.

Следующий рисунок демонстрирует GridView в действии. Обратите внимание на то, что кнопки Edit и Delete позволяют посетителю редактировать значения фиксированных клиентских атрибутов и удалять клиента. При нажатии на ссылку View/Edit Custom Attributes (Просмотр/редактирование специализированных атрибутов) пользователь перейдет ко второй странице, где он может просмотреть и модифицировать выбранные специализированные атрибуты клиента.


Препятствия на пути построения пользовательского интерфейса специализированных клиентских атрибутов

Поскольку каждый пользователь может определить свои собственные клиентские атрибуты, то страница ~/Customers/ClientCustomAttributes.aspx, которая отображает пользовательский интерфейс для просмотра и редактирования данных атрибутов, должна иметь возможность динамически генерировать пользовательский интерфейс для атрибутов, указанных для клиента, связанного с пользователем их создавшим. Хорошей новостью является то, что ASP.NET позволяет разработчикам программно добавить веб-элементы управления к иерархии элементов управления страницы. Другими словами, мы можем написать код, который будет программно создавать элементы TextBoxes, CheckBoxes и другие, тем самым динамически генерировать соответствующий пользовательский интерфейс для уникальных клиентских атрибутов пользователя. В данной статье мы создадим код динамического добавления элементов управления к странице.

Одним препятствием является генерация соответствующего пользовательского интерфейса, другим - отображение значений специализированных атрибутов для клиентов при редактировании, а также их сохранение в базе данных. Данные препятствия мы рассмотрим в следующих двух разделах.