пятница, 28 мая 2010 г.

[Перевод] Улучшена поддержка сторонних элементов управления и Dynamic Data в ASP.NET 4.0 и DevExpress Grid и Dynamic Data

Перевод статьи Скота Хантера (http://blogs.msdn.com/scothu/archive/2009/03/10/better-support-for-3rd-party-controls-and-dynamic-data-in-asp-net-4-0-and-devexpress-grid-and-dynamic-data.aspx).

Одна из вещей, над которой мы работали, является поддержка в Dynamic Data для сторонних элементов управления, например Grid, возможности хостить динамические элементы управления. По существу, позволять разработчикам использовать элементы управления, которые им нравятся или более функциональны, нежели доступные элементы управления в ASP.NET, поддерживающие Dynamic Data.

В первой версии Dynamic Data мы попытались работать в различных ограничениях, поскольку она поставлялась в Service Pack, который ограничивал возможные изменения в фрэймворке. В основном мы смогли добавить новый API, но было мало возможностей для изменения существующего API.

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

Для решения этого в .NET 4.0 мы добавили новые интерфейсы, которые позволяют реализовывать привязку данных, а также указывать отображает ли элемент управления одиночный элемент или список элементов. Вот классификация новых интерфейсов:

public interface IDataBoundControl

Интерфейс для доступа к общим свойствам связи данных с элементами управления.

string DataSourceID { get; set; }

Возвращает или устанавливает идентификатор элемента управления, из которого, связанный с данными элемент управления получает свой список элементов.

IDataSource DataSourceObject { get; }

Возвращает актуальный источник данных, когда DataSourceId задано.

object DataSource { get; set; }

Устанавливает или возвращает объект, из которого элемент управления, связанный с данными, получает свой список элементов.

string[] DataKeyNames {get; set; }

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

DataBoundControlMode Mode { get; }

Определяет находится ли элемент управления в режиме ReadOnly. Редактирование или режим вставки.

string DataMember { get; set; }

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

public interface IDataBoundListControl

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

DataKeyArray DataKeys { get; }

Возвращает коллекцию объектов DataKey, представляющую ключевое значение данных для каждой строки из GridView.

DataKey SelectedDataKey { get; }

Возвращает объект DataKey, содержащий значения ключей данных для выбранной строки элемента управления GridView.

int SelectedIndex { get; set; }

Возвращает или устанавливает индекс выбранной строки в GridView.

string[] RowClientIDSuffix { get; set; }

 

bool EnablePersistedSelection { get; set; }

Возвращает или устанавливает выборку на основе индекса ключей данных.

IDataBoundItemControl

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

DataKey DataKey { get; }

Возвращает объект DataKey, представляющий значение ключа данных строки в элементе управления.

IFieldControl

Interface for data bound controls that can automatically generate their fields based on data.

IAutoFieldGenerator FieldsGenerator { get; set; }

Возвращает или устанавливает IAutoFieldGenerator, создающий поля.

IDataBoundControl реализуется элементом управления для индикации поддержки привязки данных. Это включает источник данных, первичные ключи и режим, в котором работает элемент управления. IDataBoundListControl указывает элементу управления, отображающему данные в список и поддерживающему выбор. IDataBoundItemControl определяет элемент управления, отображающий одну запись одновременно. И IFieldControl - для элементов управления, как GridView или DetailView, имеющих возможность автоматически генерировать свои столбцы. Эти новые интерфейсы реализуются для всех стандартных элементов управления данными в 4.0, включая ListView, GridView, DetailsView и FormView. Если сторонние элементы управления поддерживают эти интерфейсы, то могут быть использованы с Dynamic Data.

Один из поставщиков элементов управления, DevExpress, недавно ввела Dynamic Data без поддержки этих интерфейсов в Grid Control. Вот очень хороший скринкаст от Mehul Harry, который демонстрирует их grid и Dynamic Data в действии. Посмотреть скринкаст можно здесь: http://community.devexpress.com/blogs/aspnet/archive/2009/02/01/asp-net-dynamic-data-and-devexpress-grid.aspx. Пожалуйста, посмотрите и дайте Mehul знать, что вы об этом думаете!

Комментариев нет:

Отправить комментарий