Привязка элементов управления к данным
А сейчас мы рассмотрим еще одну очень интересную возможность – привязку элементов управления к данным. Это значит, что вы можете, скажем, заполнять списки значениями, взятыми из записей набора данных, или заимствовать оттуда же начальные значения для полей ввода. Первое, во всяком случае, очень часто бывает нужно.
Давайте добавим в нашу гостевую книгу второе поле – тип записи. Тип записи будет показывать, что хотел сказать посетитель сайта: похвалить его разработчика, поругать или сделать нейтральное замечание. Соответственно, это поле может принимать три значения: положительное, нейтральное или отрицательное замечание.
Откроем базу данных Guestbook.mdb в Access и добавим в таблицу Guestbook еще одно поле sign. Зададим для него числовой тип. После этого создадим еще одну таблицу под названием signs, содержащую два поля: счетчик ID и текстовое Desc. В поле ID будет помещаться уникальный номер каждой записи, а в поле Desc – описание соответствующей оценки. Сделаем поле ID ключевым. После этого привяжем поле sign таблицы Guestbook к полю ID таблицы Signs.
Далее откроем таблицу signs и создадим в ней три записи: "Положительно", "Нейтрально" и "Отрицательно". Access автоматически проставит в полях ID уникальные номера этих записей. Теперь осталось открыть таблицу Guestbook и проставить в поле sign для всех записей какое-либо значение, неважно, какое. На этом подготовительные действия можно считать законченными. Закройте Access и вернитесь в Dreamweaver.
Откройте страницу AddRecord.asp. Поместите в форму новый элемент управления – раскрывающийся список sign. Вставьте его между полем ввода content и кнопкой отправки данных. И сохраните страницу.
Откуда будут браться значения для заполнения нашего списка? Правильно, из набора данных. Страница AddRecord.asp не содержит никаких наборов данных, поэтому нам нужно его создать.
Выберите в меню кнопки со знаком "плюс" панели Bindings пункт Recordset (Query). В диалоговом окне Recordset, которое появится на экране после этого, задайте имя создаваемого набора данных signs, выберите базу данных Guestbook и таблицу signs. После нажатия кнопки ОК набор данных будет создан.
В раскрывающемся списке Menu выбирается нужный список. Но, поскольку мы его уже выделили на форме, этот список недоступен.
В раскрывающемся списке Options From Recordset выбирается набор данных, из которого будут браться значения для заполнения выделенного списка. Пункт None позволит вам "отвязать" список от наборов данных, т. е. создать обычный список с фиксированным набором пунктов. Поле набора данных, из которого будут браться значения для создания пунктов, выбирается в раскрывающемся списке Labels, а поле, из которого будут браться значения этих пунктов, – в списке Values.
Выберите в списке Options From Recordset набор данных signs, в списке Labels – поле Desc, а в списке Values – поле ID. И продолжим разговор об окне Dynamic List/Menu.
Если вы хотите, чтобы при открытии страницы какой-то пункт списка отображался изначально выбранным, воспользуйтесь полем ввода Select Value Equal To. В него вводится значение пункта, который должен быть изначально выбранным. В нашем случае это число 1 – значение поля ID первой записи таблицы signs.
Если вы хотите поместить в список свои собственные пункты, не взятые из набора данных (статические), воспользуйтесь списком Static Options. Этот список состоит из двух колонок: Value (значение пункта) и Label (название пункта). Чтобы ввести в этот список новый пункт, нажмите кнопку со знаком "плюс", и пункт будет добавлен. Поочередно щелкните по значениям, находящимся в обеих колонках, введите нужный текст и не забудьте нажать клавишу Enter. Точно так же вы можете изменить необходимое значение в колонке любого уже созданного пункта.
Если вы хотите удалить ненужный пункт из этого списка, выберите его и нажмите кнопку со знаком "минус". А кнопки вверх и вниз, позволят вам переместить выбранный пункт соответственно выше или ниже на одну позицию.
Введя все данные, нажмите кнопку ОК. Вот и все.
Точнее, не все. Нам еще нужно изменить параметры поведения insert Record так, чтобы значение выбранного в списке sign пункта помещалось в поле sign таблицы Guestbook. Для этого откройте панель Server Behaviors и дважды щелкните по пункту Insert Record (from "AddRecord"), после чего на экране появится уже знакомое вам диалоговое окно Insert Record. Выберите в описке Form Elements пункт Sign <ignore>, после чего выберите в раскрывающемся списке Column пункт Sign, а в раскрывающемся списке Submit As – пункт Numeric (впрочем, сам Dreamweaver автоматически выберет этот пункт). И, конечно, нажмите кнопку ОК.
Вот теперь действительно все. Можете проверить страницу в действии.