Методические указания к ДЗ №2 (1071212), страница 3
Текст из файла (страница 3)
«Интернет-технологии»39Рис. 48Однако, если при вводе данных длина поля превышена (в базе данныхустановлено ограничение на 50 символов), то возникает ошибка:Рис. 49ОглавлениеГапанюк Ю.Е. «Интернет-технологии»40Рис. 50Также в текущей версии программы мы не можем добавлять данные всписок.Остановим отладку и устраним возникшие замечания.Для остановки отладки проекта в Visual Studio используется кнопка «StopDebugging».ОглавлениеГапанюк Ю.Е. «Интернет-технологии»41Рис. 51Но интересной особенностью является то, что запущенный веб-сервер неостанавливается. В случае необходимости его можно остановить вручную впанели управления:Рис. 52ОглавлениеГапанюк Ю.Е. «Интернет-технологии»42Если веб-сервер не остановлен, то возможно вносить изменения в проект вVisual Studio и при этом отлаживать изменения без запуска проекта.Если изменения вносятся в файлы ASPX, а не в код C#, то достаточносохранить файл ASPX и изменения будут доступны для запущенного веб-сервера.При этом сборка и запуск проекта в Visual Studio не требуются.Изменим в Visual Studio заголовок страницы «ProcessorList.aspx» исохраним файл:Рис.
53Далее, сохранив файл, но не запуская проект, перейдем в браузер и обновимстраницу:ОглавлениеГапанюк Ю.Е. «Интернет-технологии»43Рис. 54Отменим внесенные изменения:<h1>Данные о процессорах</h1>Если изменения вносились в код С#, то требуется сборка и запуск проекта.Добавим валидатор для ограничения на длину.Для этого необходимо сконвертировать колонку «ProcessorName» в«TemplateField».ОглавлениеГапанюк Ю.Е.
«Интернет-технологии»44Рис. 55Рис. 56Необходимо выбрать гиперссылку «Convert this field into a TemplateField» инажать «OK».Далее необходимо изменить шаблон представления поля в режимередактирования.ОглавлениеГапанюк Ю.Е. «Интернет-технологии»45Рис. 57Рис. 58В выпадающем списке необходимо переключиться в отображение поля врежиме редактирования «EditItemTemplate».ОглавлениеГапанюк Ю.Е. «Интернет-технологии»46Рис. 59Добавить валидатор RequiredFieldValidator, который требует, чтобы полебыло обязательно заполнено.Рис. 60Изменить свойства компонента-валидатора:ОглавлениеГапанюк Ю.Е. «Интернет-технологии»47 ControlToValidate = TextBox1 (ссылка на элемент управления, содержимоекоторого необходимо проверять). Display = Dynamic (сообщение отображается только в случае ошибки) ErrorMessage = Необходимо ввести наименование (текст сообщения обошибке)Рис.
61Можнопереименовать«ProcessorNameTextBox»)иэлементизменитьуправлениясвойство(напримерControlToValidateв=ProcessorNameTextBox.Далее необходимо добавить валидатор, который проверяет длину поля. Дляэтого используется CustomValidator.ОглавлениеГапанюк Ю.Е. «Интернет-технологии»48Рис. 62Изменить свойства компонента-валидатора: ControlToValidate = ProcessorNameTextBox (ссылка на элемент управления,содержимое которого необходимо проверять) Display = Dynamic (сообщение отображается только в случае ошибки) ErrorMessage = Длина поля не должна превышать 50 символов (текстсообщения об ошибке)ОглавлениеГапанюк Ю.Е.
«Интернет-технологии»49Рис. 63Далее необходимо переключиться в список обработчиков событий(пиктограмма с молнией в окне свойств).Рис. 64ОглавлениеГапанюк Ю.Е. «Интернет-технологии»50И добавить обработчик для события «ServerValidate», для этого необходимодважды кликнуть на название свойства.Рис. 65В появившемся окне обработчика события необходимо ввести следующийкод на C#:protected void CustomValidator1_ServerValidate(object source,ServerValidateEventArgs args){//В этом обработчике события необходимо присвоить параметруargs.IsValid//значение true если нет ошибки, и значение false если естьошибка//args.Value возвращает введенный текст//По умолчанию валидация пройдена, ошибка не отображаетсяargs.IsValid = true;//Введенное значение сохраняется во временную переменнуюstring temp = args.Value;//Если длина введенной строки более 50 символов, то валидацияне пройденаОглавлениеГапанюк Ю.Е. «Интернет-технологии»51if (temp.Length > 50) args.IsValid = false;}Рис.
66Реализуем возможность добавления записи в нижнем заголовке.Перейдем в шаблон «FooterTemplate» и добавим в него кнопку.ОглавлениеГапанюк Ю.Е. «Интернет-технологии»52Рис. 67Изменим свойства кнопки: Text = Добавить (надпись на кнопке) CommandName = Insert (кнопка должна генерировать команду добавления вБД)Переключим форму в режим «Source» или «Split».
В тэге «asp:GridView» ксодержимому секции «FooterTemplate» (кнопке) добавим содержимое секции«EditItemTemplate» (в нижнем заголовке, как и в режиме редактирования, будетполе ввода и валидаторы).Далее в секции «FooterTemplate» необходимо удалить из тэга «asp:TextBox»атрибут «Text='<%# Bind("ProcessorName") %>'» (чтобы поле ввода не былосвязаностекущейзаписью«ProcessorNameTextBox»втаблицепереименоватьвБД)иназваниеэлемента«NewProcessorNameTextBox»TextBox и обоих валидаторах.Содержимое секции «FooterTemplate»:<FooterTemplate><asp:Button ID="Button1" runat="server" Text="Добавить"CommandName="Insert"/>ОглавлениеГапанюк Ю.Е. «Интернет-технологии»в53<asp:TextBox ID="NewProcessorNameTextBox"runat="server"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator1"runat="server" ControlToValidate="NewProcessorNameTextBox"Display="Dynamic" ErrorMessage="Необходимо ввестинаименование"></asp:RequiredFieldValidator><asp:CustomValidator ID="CustomValidator1" runat="server"ControlToValidate="NewProcessorNameTextBox" Display="Dynamic"ErrorMessage="Длина поля не должна превышать 50 символов"onservervalidate="CustomValidator1_ServerValidate"></asp:CustomValidator></FooterTemplate>В тэг «asp:GridView» добавим атрибут «ShowFooter="True"», при этомизменится соответствующее свойство в панели свойств.Рис.
68Если мы нажимаем кнопку, расположенную в элементе «GridView», то принажатии отрабатывает событие «RowCommand» элемента «GridView».ОглавлениеГапанюк Ю.Е. «Интернет-технологии»54Добавим обработчик события (для этого необходимо выбрать элемент«GridView», нажать в панели свойств кнопку с молнией и дважды кликнуть насобытие «RowCommand»):protected void GridView1_RowCommand(object sender,GridViewCommandEventArgs e){//(e.CommandName == "Insert") - вызвана команда добавления//(в нашем случае нажата кнопка с CommandName=Insert)//(Page.IsValid == true) - нет ошибок валидацииif ((e.CommandName == "Insert") && (Page.IsValid == true)){//Найти элемент TextBox соответствующий введенному значениюTextBox tb =(TextBox)GridView1.FooterRow.FindControl("NewProcessorNameTextBox");//Добавление параметра из TextBoxProcessorSqlDataSource.InsertParameters["ProcessorName"].DefaultValue = tb.Text;//Вызов команды добавления данных в БДProcessorSqlDataSource.Insert();}}Запустим проект и добавим новый элемент:ОглавлениеГапанюк Ю.Е.
«Интернет-технологии»55Рис. 69Рис. 70Невозможно добавить пустой элемент:ОглавлениеГапанюк Ю.Е. «Интернет-технологии»56Рис. 71Невозможно добавить текст более 50 символов:Рис. 72Эти валидаторы также отрабатывают при редактировании элемента:ОглавлениеГапанюк Ю.Е. «Интернет-технологии»57Рис. 73К сожалению, при попытке редактирования записи, проверяются не тольковалидаторы, относящиеся к полям этой записи, но и валидаторы, относящиеся кфутеру, поэтому для сохранения отредактированной записи необходимо ввести вполе новой записи в футере какое-то значение меньше 50 символов.Для решения этой проблемы можно отказаться от использованиявалидаторов в футере, но это усложнит учебный пример.3.2.3 Создание формы редактирования данных о компьютерахСоздадим новую форму и назовем ее «ComputerList.aspx».
В файле«Default.aspx» добавим гиперссылку на новую форму.ОглавлениеГапанюк Ю.Е. «Интернет-технологии»58Рис. 74Добавим элемент «FormView». Этот элемент позволяет реализовыватьрежим просмотра и редактирования для одной записи.Рис. 75Создадим новый источник данных на основе таблицы «Computer».ОглавлениеГапанюк Ю.Е. «Интернет-технологии»59Рис. 76Рис. 77ОглавлениеГапанюк Ю.Е. «Интернет-технологии»60Рис. 78Также необходимо создать источник данных ProcessorSqlDataSource длятаблицы «Processor», для него не нужно генерировать команды обновленияданных, он используется для выбора соответствующего процессора.
Его нужноперенести в форму с панели элементов:Рис. 79Далее для элемента «FormView» включим режим разбивки данных настраницы (необходимо установить флаг «Enable Paging»).ОглавлениеГапанюк Ю.Е. «Интернет-технологии»61Рис. 80Отредактируем шаблоны представления:Рис. 81Выберем шаблон редактирования данных (EditItemTemplate).ОглавлениеГапанюк Ю.Е. «Интернет-технологии»62Рис. 82Для поля «ComputerName» могут быть добавлены валидаторы проверкиобязательности ввода и проверки длины введенного текста, как в справочникепроцессоров.Для поля «ram» добавим возможность проверки на целочисленное значение.Для этого используется CompareValidator.ОглавлениеГапанюк Ю.Е. «Интернет-технологии»63Рис.
83Необходимо изменить свойства компонента-валидатора: ControlToValidate=ramTextBox(ссылканаэлементуправления,содержимое которого необходимо проверять). Display = Dynamic (сообщение отображается только в случае ошибки) ErrorMessage = Необходимо ввести целое число (текст сообщения обошибке) Operator = DataTypeCheck (выполняется только проверка типов) Type = Integer (поле целого типа)ОглавлениеГапанюк Ю.Е. «Интернет-технологии»64Рис. 84Такой же валидатор может быть создан для поля «hdd».Для поля «lastupgrade» заменим поле ввода на календарь:Рис.