Создание динамического пользовательского интерфейса ASP.NET, управляемого данными - Просмотр динамических клиентских атрибутов пользователя
ОГЛАВЛЕНИЕ
Просмотр динамических клиентских атрибутов пользователя
Страница DefineClientAttributes.aspx включает в себя элемент управления GridView, перечисляющий динамические клиентские атрибуты пользователю, связанному с авторизированным клиентом. Данный GridView заполняется посредством элемента SqlDataSource, названного CustomAttributesDataSource. Свойству SelectCommand данного элемента управления источником данных назначается следующий запрос:
SELECT DynamicAttributesForClients.DynamicAttributeId, DynamicAttributesForClients.DataTypeId, DynamicAttributesForClients.AttributeName, DynamicAttributesForClients.SortOrder, DynamicAttributeDataTypes.DataTypeName
FROM DynamicAttributesForClients
INNER JOIN DynamicAttributeDataTypes ON
DynamicAttributesForClients.DataTypeId = DynamicAttributeDataTypes.DataTypeId
WHERE (DynamicAttributesForClients.CustomerId = @CustomerId)
ORDER BY DynamicAttributesForClients.SortOrder, DynamicAttributesForClients.AttributeName
Обратите внимание на то, что он возвращает все записи из таблицы DynamicAttributesForClients для конкретного значения CustomerId. Он возвращает название типа данных для каждого атрибута путем объединения (join) с таблицей DynamicAttributeDataTypes. Наконец, он сортирует результат по колонке SortOrder в возрастающем порядке, при этом сортируя в алфавитном порядке по колонке AttributeName.
Нам необходимо указать значение для параметра @CustomerId. Это может быть сделано путем создания обработчика для события Selecting элемента SqlDataSource. Событие Selecting вызывается каждый раз, когда элемент управления источником выполняет свой запрос SelectCommand по отношению к базе данных. Следующий код обработчика события назначает значение параметра @CustomerId в значение CustomerId, ассоциированное с авторизированным клиентом:
Protected Sub CustomAttributesDataSource_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles CustomAttributesDataSource.Selecting
e.Command.Parameters("@CustomerId").Value = Helpers.GetCustomerIdForLoggedOnUser()
End Sub
Следующее изображение демонстрирует GridView в момент, когда его просматривают в обозревателе. Как вы могли уже заметить, GridView перечисляет специализированные клиентские атрибуты соответствующего пользователя.