Расширенный GridView с функцией вставки

ОГЛАВЛЕНИЕ

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

•    Скачать исходники - 30.07 KB

Введение

DataGrid был плохим поскольку гордо заявлял, что делает все, что вы когда-либо хотели делать при отображении табличных данных. Но он вообще не делал хорошо то, что должен. Несмотря на то что он имел свойства AllowPaging и AllowSorting, приходилось вручную подключать листание и сортировку.

Затем появился ASP.NET 2 со своим новым передовым управляющим элементом GridView. В силу давнего отказа от DataGrid и ручного программирования быстрых Repeaters и DataLists были сомнения насчет испытания новейшего раздутого программного обеспечения. Но GridView оказался легким и полезным. Объединение GridView с ObjectDataSource позволяет производить листание, сортировку, поиск, редактирование и удаление без написания кода. И это не рекламное "отсутствие кода", на деле означающее "всего один-два метода", а настоящее серьезное " отсутствие кода ".

Единственным недостатком является отсутствие встроенной поддержки вставки новых записей через GridView. Это постоянно приходится делать на страницах ведения списков. Раньше способом было добавить пустую временную строку вверх GridView и разрешить пользователям вставлять через эту строку. Ниже показано, как это должно выглядеть.

Общий способ добиться этого заключается в следующем:

•    Получить данные
•    Изменить их путем вставки пустой записи в самое начало (т.е.: индекс 0)
•    Связать измененные данные с сеткой
•    Изменить размер страницы, так как первая страница должны показывать вставленную строку
•    Изменять командные кнопки по мере связывания строк

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

Задача была трудной, в основном из-за выяснения того, как GridView в действительности работает внутри, что было сделано благодаря замечательному инструменту дизассемблирования .NET Reflector.