Пошаговое руководство. Отображение форматированных данных на веб-страницах с помощью серверного веб-элемента управления FormView
Обновлен: Ноябрь 2007
В ASP.NET представлено несколько элементов управления, позволяющих отображать и редактировать записи данных. В этом пошаговом руководстве рассматривается работа с элементом управления FormView, работающим с одной записью данных за раз. Главная функция элемента управления FormView заключается в создании макета записи путем определения шаблонов. При работе с шаблонами можно получить полный контроль над макетом и внешним видом данных в элементе управления. Элемент управления FormView также поддерживает обновления, такие как редактирование, вставка и удаление записей данных. Если источник данных предоставляет несколько записей для элемента управления FormView, то с помощью элемента управления можно пролистывать записи по отдельности.
Примечание. |
---|
Также при помощи элемента управления DetailsView, предоставляющего ранее указанный макет данных, можно редактировать отдельные записи данных. Дополнительные сведения см. в разделе Общие сведения о серверном веб-элементе управления DetailsView. |
В этом пошаговом руководстве рассматриваются следующие задачи:
создание страницы, в которой отображаются основные/подробные сведения;
использование элемента управления FormView для создания произвольного макета записи данных;
настройка элемента управления FormView для редактирования.
Обязательные компоненты
Для выполнения этого пошагового руководства потребуется:
Microsoft Visual Web Developer.
Доступ к учебной базе данных "Northwind" на SQL Server. Сведения о загрузке и установке образца учебной базы данных "Northwind" на SQL Server см. в документе Установка образцов баз данных на веб-узле Microsoft SQL Server.
Примечание. Сведения о входе в систему SQL Server можно получить у администратора сервера.
Компоненты доступа к данным MDAC 2.7 или более поздней версии.
Если используется Microsoft Windows XP или Windows Server 2003, то компоненты MDAC версии 2.7 уже установлены. Однако если используется Microsoft Windows 2000, то может потребоваться обновление компонентов доступа к данным MDAC, уже установленных на компьютере. Дополнительные сведения содержатся в разделе "Установка компонентов доступа к данным MDAC" в библиотеке MSDN.
Создание веб-узла
Создайте новый веб-узел и страницу, выполнив следующие действия.
Создание веб-узла на базе файловой системы
Откройте Visual Web Developer.
В меню Файл выберите команду Создать и затем выберите Веб-узел. При использовании Visual Web Developer, экспресс-выпуск в меню Файл последовательно выберите пункты СоздатьВеб-узел.
Откроется диалоговое окно Создать веб-узел.
В разделе Установленные шаблоны Visual Studio выберите Веб-узел ASP.NET.
В поле Расположение введите имя папки, где следует хранить страницы веб-узла.
Например, введите имя папки C:\WebSites\FormViewData.
В списке Язык выберите предпочтительный язык программирования.
Нажмите кнопку ОК.
Visual Web Developer создаст папку и новую страницу с именем Default.aspx.
Использование раскрывающегося списка в качестве главного списка
В данной части пошагового руководства будет показано добавление раскрывающегося списка на страницу и внесение в него пунктов списка названия продуктов. Когда пользователь выбирает продукт, на странице в элементе управления FormView отображаются сведения об этом продукте.
Создание и заполнение раскрывающегося списка
Переключитесь на страницу Default.aspx или откройте ее. При работе с созданным веб-узлом добавьте или откройте страницу, с которой можно работать в данном пошаговом руководстве.
Перейдите в представление конструирования.
Введите на странице Отображение сведений о продукте.
Из группы Стандартная в Панели элементов перетащите на страницу элемент управления DropDownList.
Если контекстное меню Задачи DropDownList не отображается, то щелкните правой кнопкой мыши элемент управления DropDownList и нажмите кнопку Показать смарт-тег.
В меню DropDownListЗадачи установите флажок Включить AutoPostBack.
Нажмите кнопку Выбор источника данных, чтобы открыть окно Мастера настройки источника данных.
В списке Выбор источника данных выберите пункт <Создать источник данных>.
Нажмите кнопку База данных.
Это показывает, что данные можно получить из базы данных, поддерживающей инструкции SQL.
В поле Указать идентификатор для источника данных отображено имя источника данных по умолчанию. Можно оставить это имя.
Нажмите кнопку ОК.
В мастере отобразится страница, на которой можно выбрать подключение.
Нажмите кнопку Новое подключение.
Откроется диалоговое окно Добавить подключение.
Если в списке Источник данных отсутствует элемент Microsoft SQL Server (SqlClient), нажмите кнопку Изменить и в диалоговом окне Изменить источник данных выберите Microsoft SQL Server.
Если откроется страница Выбор источника данных, в списке Источник данных выберите тип используемого источника данных. В данном руководстве в качестве типа источника данных используется Microsoft SQL Server. В списке Поставщик данных выберите Поставщик данных платформы .NET Framework для SQL Server и нажмите кнопку Продолжить.
В диалоговом окне Добавить подключение выполните следующие действия:
В поле Имя сервера введите имя компьютера, на котором выполняется SQL Server.
Для ввода учетных данных, необходимых для входа в систему, выберите соответствующий параметр доступа к выполняющейся базе данных SQL Server (встроенная безопасность или определенный идентификатор и пароль) и, если требуется, введите имя пользователя и пароль. При вводе пароля установите флажок Сохранить мой пароль.
Выберите кнопку Выберите или введите имя базы данных, а затем введите имя базы Northwind.
Нажмите кнопку Проверить подключение и, если есть уверенность, что подключение работает, нажмите кнопку ОК.
Также можно вернуться к мастеру и внести в него сведения о подключении.
Нажмите кнопку Далее.
Убедитесь, что флажок Да, сохранить подключение как установлен и выберите Далее. (Можно оставить имя строки соединения по умолчанию.)
В мастере отображается страница, на которой можно указать, какие данные необходимо извлечь из базы данных.
Нажмите кнопку Укажите столбцы из таблицы или представления.
В списке Название выберите Продукты.
В меню Столбцы выберите пункты ProductID и ProductName.
Нажмите кнопку Далее.
Нажмите кнопку Проверить запрос, чтобы убедиться в получении необходимых данных.
Нажмите кнопку Готово.
Вновь откроется окно мастера.
В списке Выберите поля данных для отображения в DropDownList нажмите кнопку ProductName.
В списке Выберите поля данных для значения DropDownList выберите пункт ProductID.
Указывает, что когда элемент выбран, поле ProductID будет возвращено в качестве значения элемента.
Нажмите кнопку ОК.
Перед обработкой проверьте раскрывающийся список.
Проверка раскрывающегося списка
Нажмите CTRL+F5 для запуска страницы
Когда страница отобразится, проверьте раскрывающийся список.
Выберите имя продукта и убедитесь, что список выполняет обратную передачу.
Добавление элемента управления FormView
Теперь можно добавить элемент управления FormView для отображения сведений о продукте. Элемент управления FormView возвращает данные из другого элемента управления источником данных, который был добавлен на страницу. Во втором элементе управления источником данных содержится параметризованный запрос, возвращающий запись о продукте для элемента, выделенного в элементе управления DropDownList.
Добавление элемента управления FormView
Из группы Данные, расположенной в Панели элементов, перетащите на страницу элемент управления FormView.
Если контекстное меню Задачи FormView не отображается, щелкните правой кнопкой мыши элемент управления FormView и нажмите кнопку Показать смарт-тег.
В меню Задачи FormView в поле Выбор источника данных списка нажмите кнопку <Новый источник данных>.
Откроется диалоговое окно Мастер настройки источника данных.
Нажмите кнопку База данных.
Элемент управления FormView будет возвращать данные из той же таблицы, что и элемент управления DropDownList.
В поле Указать идентификатор для источника данных отображено имя источника данных по умолчанию. Можно оставить это имя.
Нажмите кнопку ОК.
Запустится мастер Настройка источника данных.
В списке Какое подключение ваше приложение должно использовать для работы с базой данных? выберите ранее созданное и сохраненное в руководстве подключение.
Нажмите кнопку Далее.
В мастере отобразится страница, в которой вы можете создать инструкцию SQL.
В списке Имя из окна Укажите столбцы из таблицы или представления выберите пункт Продукты.
В поле Столбцы выберите значения ProductID, ProductName и UnitPrice.
Нажмите кнопку WHERE.
Откроется диалоговое окно Добавить предложение WHERE.
В списке Столбец выберите пункт ProductID.
В списке Оператор выберите значение =.
В списке Источник выберите пункт Элемент управления.
В разделе Свойства параметров списка Идентификатор элемента управления выберите DropDownList1.
На двух последних шагах можно указать, что запрос будет возвращать значение поиска для идентификатора продукта из ранее добавленного элемента управления DropDownList.
Нажмите кнопку Добавить.
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Добавить предложение WHERE.
Нажмите кнопку Дополнительно.
Появится диалоговое окно Дополнительные параметры создания SQL.
Установите флажок Создать операторы INSERT, UPDATE и DELETE.
При использовании этого параметра мастер создает инструкции для обновления SQL на основе настроенной инструкции Select. Далее в руководстве элемент управления FormView будет использоваться для редактирования и вставки записей, которые требуются для обновления инструкций элемента управления источником данных.
Нажмите кнопку ОК.
Нажмите кнопку Далее.
На странице "Предварительный просмотр" нажмите кнопку Проверить запрос.
В мастере отображается диалоговое окно, запрашивающее значение, используемое в предложении WHERE.
В поле Значение введите 4 и нажмите кнопку ОК.
Отобразятся сведения о продукте.
Нажмите кнопку Готово.
Настройка структуры в элементе управления FormView
Причина использования элемента управления FormView заключается в определении структуры отображаемой записи. В данном разделе руководства будет произведена настройка структуры записи путем редактирования шаблона. Для структуры можно использовать HTML-таблицу.
Форматирование структуры
Щелкните элемент управления FormView, чтобы выбрать его, и затем перетащите маркер изменения размера на правую сторону элемента управления, чтобы выровнять ширину элемента управления по ширине текущей странице.
Перетащите маркер изменения размера в нижнюю часть элемента управления, чтобы изменить его высоту приблизительно до 400 точек. (Точная высота не важна.)
Щелкните правой кнопкой мыши элемент управления Изменить шаблон, а затем выберите команду ItemTemplate.
Элемент управления заново отобразится в режиме редактирования шаблона элемента. Шаблон элемента содержит статичный текст и элементы управления, используемые для отображения записи данных при запуске страницы. По умолчанию Visual Web Developer выполняет заполнение шаблона элемента элементом управления Label с привязкой к данным для каждого столбца данных источника данных. Кроме того, Visual Web Developer создает статический текст для каждой метки, действующей в качестве заголовка.
В шаблоне также создаются три элемента управления LinkButton с текстом Редактировать, Удалить и Создать.
Поместите точку вставки в верхней части шаблона элемента, нажмите клавишу ВВОД несколько раз, чтобы освободить место, и затем введите в верхней части шаблона Сведения о продукте в качестве заголовка.
Поместите курсор ниже элементов управления и статичного текста, а затем в меню Таблица нажмите кнопку Вставить таблицу.
Создается HTML-таблица, служащая в качестве контейнера для текста и элементов управления.
В диалоговом окне Вставить таблицу задайте значение Строки равным "4", а Столбцы — равным "2".
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Вставить таблицу.
Выделите все ячейки таблицы и затем в меню Таблица выберите пункт Форматирование ячеек.
Появится диалоговое окно Свойства ячейки.
Задайте Ширину равной 35 точкам (px) и Высоту равной 30 точкам (px).
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Свойства ячейки.
Перетащите элемент управления ProductIdLabel в верхнюю правую ячейку.
Перетащите элемент управления ProductNameLabel во вторую правую ячейку.
Перетащите элемент управления UnitPriceLabel в третью правую ячейку.
Введите статичный текст в левый столбец в качестве заголовков элементов управления Label. Например, в ячейку после элемента управления ProductIdLabel введите Идентификатор. Вы можете ввести любой текст заголовков.
Щелкните правой кнопкой мыши по левому столбцу, нажмите кнопку Выбрать и затем Столбец.
В окне "Свойства" задайте ВыравниваниеПо правому краю для выравнивания текста заголовка по правому краю.
Выберите левый столбец и перетащите его правую границу для установки ширины границы таблицы достаточной для отображения длинных наименований продуктов.
Выберите текст, созданный в Visual Web Developer (например, текст ProductID), и удалите его.
Щелкните правой кнопкой мыши по заголовку окна элемента управления FormView и затем нажмите кнопку Завершить редактирование шаблона.
Редактор шаблонов закрывается, и отображается элемент управления с созданной структурой.
Тестирование элемента управления FormView
Теперь можно провести проверку структуры.
Тестирование элемента управления FormView
Нажмите клавиши CTRL+F5 для запуска страницы.
В элементе управления DropDownList щелкните имя продукта.
В элементе управления FormView отобразятся сведения об этом продукте.
Выберите другой продукт и убедитесь, что элемент управления FormView отображает сведения о продукте.
Закройте веб-обозреватель.
Добавление инструкций "Изменить" и "Вставить" в элемент управления FormView
В элементе управления FormView могут отображаться отдельные записи, а также поддерживается редактирование, удаление и вставка.
В данном разделе руководства показано добавление возможности редактирования отображаемой в данный момент записи. Для редактирования записи следует определить другой шаблон, содержащий текстовые поля (и потенциально другие элементы управления).
Добавление функции редактирования в элемент управления FormView
Щелкните правой кнопкой мыши элемент управления FormView, выберите команду Редактировать шаблон и нажмите кнопку EditItemTemplate.
Отобразится окно редактора шаблонов, в котором показано свойство EditItemTemplate, определяющее расположение записей в том случае, когда элемент управления находится в режиме редактирования. Visual Web Developer заполняет шаблон редактирования элементом управления TextBox для каждого столбца данных, не являющихся ключевыми, и добавляет статический текст для надписей. Этот способ похож на способ создания шаблона элемента, за исключением того, что при редактировании шаблона Visual Web Developer создает текстовые поля.
Как и ранее, шаблон создается с элементами управления Обновить и ОтменитьLinkButton, которые используются для сохранения и отмены изменений во время редактирования.
При необходимости добавьте табличный макет и выровняйте элементы управления так, как это было сделано при работе с шаблоном элемента ранее в руководстве.
Щелкните правой кнопкой мыши элемент управления FormView, выберите команду Редактировать шаблон и затем нажмите кнопку InsertItemTemplate.
Как и для свойства EditItemTemplate, Visual Web Developer автоматически создает шаблон макета меток и элементов управления TextBox. Элементы управления отобразятся, когда пользователь захочет вставить новую запись в таблицу "Продукты". Также в шаблоне создаются элементы управления Вставить и Отменить свойства LinkButton.
При необходимости добавьте табличный макет и выровняйте элементы управления так, как это было сделано при работе с шаблоном элемента.
Щелкните правой кнопкой мыши по элементу управления FormView и затем нажмите Завершить редактирование шаблона.
Примечание о безопасности. Данные, вводимые пользователем на веб-странице ASP.NET, могут содержать потенциально небезопасный для клиента сценарий. По умолчанию на веб-страницах ASP.NET осуществляется проверка введенных пользователем данных на наличие сценариев или HTML-элементов. Если такая проверка включена, нет необходимости явным образом проверять сценарий или элементы HTML, введенные пользователем. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.
Тестирование редактирования и вставки
Теперь можно проверить функции редактирования и вставки.
Проверка возможностей редактирования элемента управления FormView
Нажмите клавиши CTRL+F5 для запуска страницы.
Выберите продукт в элементе управления DropDownList.
В элементе управления FormView отобразятся сведения о продукте.
Нажмите кнопку Изменить.
Элемент управления FormView переключится в режим редактирования.
Измените имя продукта или цену за единицу.
Нажмите кнопку Обновить.
Запись сохранится, и элемент управления FormView переключится в режим отображения. Изменения отобразятся на экране.
Выберите другой продукт.
Нажмите кнопку Изменить.
Измените имя продукта.
Нажмите кнопку Отмена.
Подтвердите, что изменение не было сохранено.
Проверка возможностей вставки элемента управления FormView
Нажмите кнопку Добавить в элементе управления FormView.
Элемент управления FormView переключится в режим вставки, в нем отобразятся два пустых текстовых поля.
Введите имя нового продукта и цену, а затем нажмите кнопку Вставить.
Запись сохранится в базе данных, а элемент управления FormView переключится в представление отображения (ItemTemplate).
Примечание. Новая запись не отображается в раскрывающемся списке. В следующем разделе будет показано, как добавить эту возможность.
Повторное отображение обновленных названий продуктов в раскрывающемся списке
Теперь с помощью страницы можно просматривать, редактировать или удалять записи в таблице базы данных "Продукты". Однако раскрывающийся список все еще не синхронизирован с изменениями, которые были внесены в элемент управления FormView. Например, при вставке новой записи о продукте она не отображается в раскрывающемся списке до тех пор, пока страница не будет закрыта и открыта заново. Кроме того, на странице сначала отображается первая запись таблицы "Продукты", которая может быть неподходящей.
Можно добавить несколько кодов для устранения этих незначительных проблем. В данном разделе пошагового руководства будет показано следующее:
обновление раскрывающегося списка, когда пользователи редактируют или вносят записи;
добавление текста "(Выбрать)" в раскрывающийся список при первом появлении страницы и удаление его, когда пользователь делает первое выделение.
Обновление раскрывающегося списка при редактировании или вставке записей
В представлении конструктора страницы выделите элемент управления FormView.
В окне "Свойства" нажмите кнопку События для отображения списка событий элемента управления FormView.
Дважды щелкните поле ItemInserted.
Visual Web Developer переключится в представление редактирования кода, и в нем будет создан обработчик событий ItemInserted.
Добавьте в обработчик событий следующий выделенный код:
Protected Sub FormView1_ItemInserted(ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.FormViewInsertedEventArgs) _ Handles FormView1.ItemInserted DropDownList1.DataBind() End Sub
[C#]
protected void FormView1_ItemInserted(object sender, FormViewInsertedEventArgs e) { DropDownList1.DataBind(); }
Код выполняется после вставки новой записи. Он выполняет повторную привязку раскрывающегося списка к таблице "Продукты", что приводит к обновлению содержимого списка.
Перейдите в представление конструктора. (Если вы работаете со страницей с выделенным кодом, переключитесь на страницу Default.aspx, а затем переключитесь в представление конструктора.)
В окне "Свойства" нажмите кнопку События для отображения списка событий элемента управления FormView.
Дважды щелкните поле ItemUpdated.
Visual Web Developer переключится в представление редактирования кода, и в нем будет создан обработчик событий ItemUpdated.
Добавьте следующий выделенный код:
Protected Sub FormView1_ItemUpdated(ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.FormViewUpdatedEventArgs) _ Handles FormView1.ItemUpdated DropDownList1.DataBind() End Sub
[C#]
protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e) { DropDownList1.DataBind(); }
Код выполняется после обновления записи. Он выполняет повторную привязку раскрывающегося списка к таблице "Продукты", что приводит к обновлению содержимого списка.
Нажмите клавиши CTRL+F5 для запуска страницы.
Измените имя продукта записи, нажмите кнопку Обновить и затем проверьте раскрывающийся список, чтобы убедиться в том, что обновленное имя отображается.
Вставьте новую запись о продукте, нажмите кнопку Вставить и затем проверьте раскрывающийся список, чтобы убедиться, что новое имя было добавлено в список.
Последним шагом является изменение раскрывающегося списка для отображения элемента "(Выделить)" и элемента управления FormView только в том случае, когда пользователи выполняют выделение.
Добавление элемента "Выделить" в элемент управления DropDownList
В представлении конструктора дважды щелкните по пустой части страницы.
В Visual Web Developer создается обработчик событий для события Load страницы.
В обработчик событий добавьте следующий выделенный код:
[Visual Basic]
Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then FormView1.Visible = False End If End Sub
[C#]
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { FormView1.Visible = false; } }
Код выполняется при запуске страницы. Прежде всего проверяется наличие обратной передачи. Если она отсутствует, то страница вызывается в первый раз. Если обратная передача отсутствует, при помощи кода происходит скрытие элемента управления FormView, поскольку он будет отображаться только тогда, когда пользователь явно выбирает запись для просмотра или редактирования.
В представлении конструктора страницы выделите элемент управления DropDownList.
В окне "Свойства" нажмите кнопку с многоточием (...) в поле Элементы.
Откроется диалоговое окно Редактор коллекции ListItem.
Нажмите кнопку Добавить для создания нового элемента.
В меню Свойства ListItem в поле Текст введите (Выбрать).
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Редактор коллекции ListItem.
В поле "Свойства" присвойте свойству AppendDataBoundItems значение true.
Во время заполнения раскрывающегося списка при привязке данных сведения о продукте добавляются в указанный элемент (Выбрать).
В окне "Свойства" нажмите кнопку События для отображения списка событий элемента управления DropDownList.
Дважды щелкните поле SelectedIndexChanged.
Добавьте следующий выделенный код:
[Visual Basic]
Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender _ As Object, ByVal e As System.EventArgs) _ Handles DropDownList1.SelectedIndexChanged If DropDownList1.Items(0).Text = "(Select)" Then DropDownList1.Items.RemoveAt(0) End If FormView1.Visible = True End Sub
[C#]
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { if(DropDownList1.Items[0].Text == "(Select)") { DropDownList1.Items.RemoveAt(0); } FormView1.Visible = true; }
Код выполняется, когда пользователи выделяют элемент в элементе управления DropDownList. Ранее добавленный элемент "(Выделить)" удаляется (прежде проверяется, существует ли он), поскольку когда в первый раз пользователи выделяют элемент, дальнейшее выделение элемента не требуется. Код также отображает (не скрывает) элемент управления FormView, поэтому пользователи могут видеть выделенную запись.
Нажмите клавиши CTRL+F5 для запуска страницы.
На странице отображается только раскрывающийся список со словом (Выделить).
Выберите элемент из списка.
Элемент отображается в элементе управления FormView.
Проверьте раскрывающийся список и отметьте, что слово (Выделить) отсутствует в списке.
Следующие действия
В этом пошаговом руководстве были показаны основные этапы использования элемента управления FormView для отображения и редактирования отдельных записей данных с помощью пользовательской модели. Элемент управления FormView позволяет производить более сложное форматирование, чем приведенное в этом руководстве. Кроме того, можно создавать шаблоны для других режимов, включая режим выбора и вставки, а также для заголовков и колонтитулов, отображаемых в записи. Отображение других сценариев с использованием элемента управления FormView см. в разделах:
Создание шаблонов для серверного веб-элемента управления FormView
Изменение данных с помощью серверного веб-элемента управления FormView
См. также
Основные понятия
Общие сведения о серверном веб-элементе управления FormView
Ссылки
Общие сведения о серверном веб-элементе управления DetailsView