Создание сетки было простым и вам даже не понадобилось кодировать доступ к данным. Однако здесь не хватает одной вещи: как обновить данные в базе данных? Имеющийся у вас GridView очень хорош для статического отчета, но что если вам понадобится редактировать данные внутри сетки (точно так же, как вы делали это в приложении Windows Forms)? Ответ здесь— набор свойств GridView: AutoGenerateEditButton и AutoGenerateDeleteButton. Когда вы устанавливаете эти свойства в значение True, то GridView автоматически добавит ссылки Edit и Delete. Ссылка Edit имеет готовый код визуализации, так что при ее нажатии данная конкретная строка сетки станет редактируемой. На рис. 18.44 обратите внимание, что после установки свойства AutoGenerateEditButton в значение True и щелчка по одной из ссылок редактирования вы получаете полностью интерактивный набор столбцов, которые вы можете использовать для модификации данных в записях.
После изменения данных в одном или нескольких столбцах вы можете нажать ссылку Update для отправки данных обратно в базу данных. Однако для того чтобы обновление работало, вам нужно явно указать элементу управления источником данных (в данном случае это элемент SqlDataSource) тот запрос, который должен использоваться для обработки обновлений. Это делается при помощи свойства SqlDataSource.UpdateQuery. Указав в этом свойстве параметризированный запрос update, вы полностью проинформировали источник данных о том, как нужно обрабатывать обновления. Для написания этого запроса вы можете еще раз воспользоваться окном Query Builder: выделите элемент управления источником данных на Web-форме и в окне Properties выберите свойство UpdateQuery. Это приведет к
запуску окна Query Builder и позволит вам сконструировать параметризированную команду обновления (рис. 18.45).
После этого последнего завершающего штриха у вас получился элемент управления "сетка", который разбивает данные из базы данных на страницы, а также фиксирует изменения в базе данных.
Примечание
Для реализации возможности удаления записи вы должны выполнить все те же самые шаги при помощи свойства DeleteQuery и настройки свойства AutoGenerat- eDeleteButton в значение True.