Наряду с добавлением новых записей часто приходится изменять уже существующие. Давайте создадим страницу, с помощью которой можно изменять уже существующие в наборе записи.
Создадим новую страницу, введем в нее поясняющий текст и сохраним под именем EditSentence.asp в папке Admin. Здесь мы впоследствии создадим форму с элементами управления, предназначенными для правки значений полей выбранной нами записи. А пока закроем эту страницу — нас ждут другие дела.
Сейчас мы добавим на страницу Sentences.asp гиперссылку, ведущую на страницу изменения записи. Откройте страницу, поместите текстовый курсор в третью ячейку второй строки таблицы (теперь вы поняли, зачем она нужна?) и наберите в ней слово "Изменить". Далее выделите это слово и наберите в поле ввода интернет-адреса редактора свойств такой текст:
EditSentence.asp?ID=
Далее переключитесь в режим отображения кода и перетащите из панели Bindings в место, находящееся точно после знака "=", поле ID набора записей. Интернет-адрес гиперссылки примет такой вид:
EditSentence.asp?ID=<%=(Sentences.Fields.Item("ID").Value)%>
Давайте выясним, что это значит. Код
Sentences.Fields.Item("ID").Value
извлекает значение поля ID данной записи набора. Далее это значение помещается в гиперссылку, которая принимает вид:
EditSentence.аsр?ID=<значение поля ID">
и передается странице EditSentences.asp в качестве значения параметра гиперссылки ID. Поскольку значение поля ID уникально для каждой записи набора (поле ID — счетчик записей, как вы помните), страница EditSentences.asp может однозначно идентифицировать запись, которую вы хотите изменить, и заполнить значениями ее полей элементы управления формы, т. е. подготовить запись к правке.
Теперь сохраните страницу Sentences.asp и откройте только что созданную нами страницу EditSentence.asp. Пора заняться ей.
Для того чтобы отредактировать запись, нам понадобится форма. Создайте ее по аналогии со страницей AddSentence.asp. Никаких особенностей она иметь не будет, поэтому вы можете просто скопировать уже готовую форму со страницы добавления новой записи и вставить ее в страницу EditSentence.asp. Но перед этим создайте на этой странице набор данных categories, также по аналогии со страницей AddSentence.asp.
Следующий шаг — создание набора записей, из которого будет взята запись для заполнения элементов управления созданной нами формы. Этот набор должен содержать одну-единственную запись, поэтому нам придется задать фильтр, отбирающий нужную запись. Она будет выбрана по значению поля счетчика ID таблицы Sentences, которое должно равняться значению параметра гиперссылки ID, переданному от страницы Sentences.asp (см. выше).
Чтобы создать фильтр, выберите название поля ID в раскрывающемся списке Filter диалогового окна Recordset, а в раскрывающемся списке, расположенном правее, — пункт = (равенство значений поля и фильтра). Далее в списке, расположенном ниже, выберите пункт URL Parameter (параметр, переданный методом GET), а в поле ввода, расположенном ниже и правее, введите имя этого параметра — ID.
Далее нам нужно заполнить элементы управления формы соответствующими им значениями. Эти значения, как вы поняли, будут взяты из только что созданного нами набора записей. Для разных элементов управления действия будут различными, и мы их сейчас опишем.
Сначала выделите область редактирования и найдите в редакторе свойств кнопку с изображением молнии — она находится правее области редактирования Init Val. Щелкните по этой кнопке. На экране появится диалоговое окно Dynamic Data; выберите в иерархическом списке Field пункт Content, соответствующий одноименному полю, и нажмите кнопку ОК. Все, теперь область редактирования получит значение из поля Content набора записей.
С раскрывающимся списком все несколько сложнее. Выделите его и нажмите кнопку Dynamic. В появившемся на экране диалоговом окне Dynamic List/Menu щелкните кнопку с изображением молнии, расположенную правее поля ввода Select Value Equal To. После этого на экране опять же появится диалоговое окно Dynamic Data; выберите в иерархическом списке Field пункт Category, соответствующий одноименному полю, и нажмите кнопку ОК. Теперь остается только нажать кнопку ОК окна Dynamic List/Menu.
Можно сделать еще проще — перетащить нужное поле из панели Bindings на соответствующий ему элемент управления. Автор рекомендует вам так и поступать в дальнейшем.
Теперь нужно создать поведение update Record, которое, собственно, и реализует заполнение формы и обновление значений полей редактируемой записи. Выберите пункт Update Record меню серверных поведений панели Server Behaviors. На экране появится диалоговое окно Update Record.
Выберите в раскрывающемся списке Connection базу данных, в списке Table То Update — таблицу, запись которой будет обновляться, а в списке Select Record From — набор записей, из которого будет взята запись для заполнения формы. В нашем случае это будет соответственно Library, Sentences и Sentences (соответственно, одноименные таблица и набор записей).
В поле ввода Unique Key Column задается поле набора записей, по которому нужная нам запись будет однозначно идентифицироваться. В нашем случае — это ключевое поле ID. Если это числовое поле (а поле ID — числовое), включите флажок Numeric, в противном случае — отключите его.
В поле ввода After Updating, Go To вводится интернет-адрес страницы, на которую будет осуществлен переход после успешного изменения записи. Введите в него sentences. asp. Вы также можете щелкнуть кнопку Browse и выбрать нужную страницу в диалоговом окне Select File.
В раскрывающемся списке Get Values From выбирается форма, из которой будут взяты значения для обновления записи.
В списке From Elements перечислены все элементы управления, находящиеся в выбранной форме. Вы можете выбрать любой из них и задать для него поле таблицы, куда будут помещены содержащиеся в нем данные, и тип отправляемых данных (текст, число, дата и т. п.).
Поле таблицы выбирается в раскрывающемся списке Column. Пункт <ignore> данного списка позволяет проигнорировать значение этого элемента управления (т. е. оно не будет помещено в поле таблицы).
Тип данных указывается в раскрывающемся списке Submit As. В нем доступны следующие пункты:
Задав все нужные данные, не забудьте нажать кнопку ОК.
Сохраните готовую страницу EditSentence.asp и проверьте ее в действии. Для этого опубликуйте сайт на Web-сервере, откройте страницу Sentences.asp в Web-обозревателе и попробуйте отредактировать какое-либо высказывание. Если страница изменения записи почему-то не работает, проверьте, все ли правильно вы сделали.