Создание каскадного списка
Применяется к
Каскадные списки помогают пользователям быстрее заполнять формы и обеспечивать правильность ввода данных пользователями. В этой статье описывается создание и заполнение каскадных списков данными. В Microsoft Office InfoPath можно заполнить список данными, которые используют значения из формы, значения из внешнего xml-документа или значения из базы данных Microsoft Office Access.
В этой статье
Что такое каскадный список?
Каскадный список — это поле списка с параметрами, которые изменяются в зависимости от значения, выбранного пользователем в другом списке. Например, если пользователь щелкает приправы в поле Категории , показанном на следующем рисунке, в поле Продукты отобразится список приправ.
В следующих разделах показано, как создать шаблон формы с двумя списками, где второй список фильтруется по значению, выбранному пользователем в первом списке. При изменении значения в первом списке фильтр автоматически применяется ко второму списку, который изменяет его значения.
Совместимость
Фильтры можно использовать только в шаблонах форм, которые предназначены для заполнения в InfoPath. Фильтры недоступны в шаблонах форм, совместимых с браузером.
Шаг 1. Вставка каскадного списка
Чтобы создать каскадный список, необходимо вставить два списка в шаблон формы.
Примечание
При вставке каскадного списка в шаблон формы убедитесь, что эти два списка не находятся в повторяющихся разделах или повторяющейся таблице.
- Если область задач Элементы управления не отображается, щелкните Другие элементы управления в меню Вставка или нажмите клавиши ALT+I, C.
- В разделе Вставка элементов управления в области задач Элементы управления щелкните Раскрывающийся список. Когда пользователь заполняет форму, основанную на шаблоне формы, выбор в этом раскрывающемся списке определяет варианты, доступные во втором списке.
- Щелкните Поле списка. Теперь шаблон формы должен содержать раскрывающийся список и стандартный список.
- Дважды щелкните раскрывающийся список, вставленный в шаблон формы на шаге 2.
- В диалоговом окне Свойства раскрывающегося списка откройте вкладку Данные .
- В поле Имя поля введите listBox1 и нажмите кнопку ОК.
- Дважды щелкните поле списка, вставленное в шаблон формы на шаге 3.
- В диалоговом окне Свойства поля списка перейдите на вкладку Данные .
- В поле Имя поля введите listBox2Cascade и нажмите кнопку ОК.
Шаг 2. Предоставление данных
Теперь, когда вы вставили поля списка в шаблон формы, необходимо указать данные, которые они будут отображать. Затем необходимо применить фильтр, чтобы выбор во втором списке зависел от выбора пользователя в первом списке.
В этом разделе объясняется, как подключить поля списка к данным с помощью трех распространенных методов: добавление данных в саму форму; подключение формы к существующему XML-документу, содержащему данные; или подключение формы к базе данных, содержащей данные. Чтобы завершить создание каскадного списка, щелкните метод, который вы хотите использовать в следующем списке.
Подключение к данным в форме
В этом разделе вы узнаете, как заполнить поля списка данными из формы. Для этого необходимо сначала настроить поля в шаблоне формы, чтобы можно было ввести имена категорий и набор продуктов для каждой категории.
Настройка полей в шаблоне формы
- Если область задач Источник данных не отображается, щелкните Источник данных в меню Вид .
- В области задач Источник данных щелкните правой кнопкой мыши группу myFields и выберите команду Добавить.
- В поле Имя в диалоговом окне Добавление поля или группы введите CategoriesAndProducts.
- В списке Тип щелкните Группировать.
- Выберите поле Повторяющиеся проверка и нажмите кнопку ОК.
- В области задач Источник данных щелкните правой кнопкой мыши группу CategoriesAndProducts .
- В поле Имя в диалоговом окне Добавление поля или группы введите Категория и нажмите кнопку ОК. Это поле будет содержать имена категорий для первого списка.
- Щелкните правой кнопкой мыши группу CategoriesAndProducts и выберите команду Добавить.
- В поле Имя в диалоговом окне Добавление поля или группы введите Продукт.
- Выберите поле Повторяющиеся проверка и нажмите кнопку ОК. Это поле будет содержать имена продуктов для второго списка.
Так как это поле списка заполнено данными из формы, данные необходимо добавить в форму. Для этого необходимо создать значения по умолчанию для полей Продукт и Категория .
Совет
Вы также можете создавать списки, отображающие значения, которые пользователи сами вводит в форме. Для этого свяжите поле списка с полями, привязанными к элементам управления в форме. Когда пользователь вводит значения в элементы управления, параметры в списке изменяются.
Создание значений по умолчанию
- В меню Сервис выберите пункт Значения по умолчанию.
- В диалоговом окне Изменение значений по умолчанию в группе КатегорииAndProducts выберите поле Категория (не очищайте поле проверка), а затем в поле Значение по умолчанию введите Морепродукты.
- Выберите поле Продукт (не очищайте поле проверка), а затем в поле Значение по умолчанию введите Crab meat.
- Щелкните правой кнопкой мыши поле Продукт и выберите команду Добавить другой продукт выше. Это позволяет добавить второй продукт для морепродуктов в качестве значения по умолчанию.
- Щелкните правой кнопкой мыши второй экземпляр поля Продукт (не очищайте поле проверка), а затем в поле Значение по умолчанию введите Salmon.
- Щелкните правой кнопкой мыши группу CategoriesAndProducts и выберите добавить другие категорииAndProducts ниже. Это позволяет добавить вторую категорию в качестве значения по умолчанию.
- Используйте предыдущие шаги, чтобы указать значения по умолчанию для второго экземпляра полей Категория и Продуктсоответственно Молочные продукты, Чеддер и Шоколадное молоко.
- Нажмите кнопку ОК.
Теперь, когда вы ввели значения по умолчанию для полей Продукт и Категория , вы можете подключить первое поле списка к только что введенным данным.
Подключение первого списка к данным
- В шаблоне формы дважды щелкните раскрывающийся список, который вы вставили ранее.
- Откройте вкладку Данные.
- В диалоговом окне Свойства раскрывающегося списка в разделе Записи списка щелкните Поиск значений в источнике данных формы.
- Щелкните Выбрать XPath
рядом с полем Записи . - В диалоговом окне Выбор поля или группы в группе КатегорииAndProducts щелкните поле Категория и нажмите кнопку ОК два раза.
Теперь необходимо подключить второе поле списка к данным. При подключении к данным необходимо применить фильтр ко второму списку. Этот фильтр заполнит второй список соответствующими продуктами в зависимости от категории, выбранной в первом списке. Фильтр сравнивает значение, выбранное в первом списке (поле listBox1), со списком категорий, сохраненным в форме (поле Категория).
Подключение второго списка к данным
- В шаблоне формы дважды щелкните стандартный список, который вы вставили ранее.
- Откройте вкладку Данные.
- В диалоговом окне Свойства списка в разделе Записи списка щелкните Поиск значений в источнике данных формы.
- Щелкните Выбрать XPath
рядом с полем Записи . - В диалоговом окне Выбор поля или группы в группе КатегорииAndProducts щелкните поле Продукт , а затем щелкните Фильтр данных.
- В диалоговом окне Фильтрация данных нажмите кнопку Добавить.
- В диалоговом окне Указание условий фильтра щелкните Выбрать поле или группу в первом поле.
- В диалоговом окне Выбор поля или группы выберите listBox1 и нажмите кнопку ОК.
- В диалоговом окне Указание условий фильтра щелкните Выбрать поле или группу в третьем поле.
- В диалоговом окне Выбор поля или группы щелкните поле Категория , а затем нажмите кнопку ОК , чтобы закрыть все открытые диалоговые окна.
Теперь, когда вы подключили второе поле списка к данным и применили фильтр, вы можете протестировать списки, чтобы убедиться, что они работают правильно.
Тестирование списков
Чтобы проверить изменения, нажмите кнопку Просмотр на стандартной панели инструментов или нажмите клавиши CTRL+SHIFT+B.
В раскрывающемся списке щелкните Морепродукты. В стандартном списке должна отображаться пустая строка, мясо краба и лосось.
Примечание
Пустая строка позволяет пользователям очистить свой выбор из списка.
Если списки работают неправильно, проверьте фильтр для второго списка, чтобы убедиться, что поле listBox1 сравнивается с полем Категория .
Подключение к внешнему XML-документу
В этом разделе вы узнаете, как создать подключение данных к XML-документу, который содержит значения продуктов и категорий. XML-документ будет дополнительным источником данных. Чтобы создать это подключение к данным, необходимо создать XML-документ, связать списки в шаблоне формы с XML-документом, а затем применить фильтр ко второму списку, чтобы список продуктов изменился соответствующим образом.
Прежде чем связать форму с дополнительным источником данных, необходимо создать XML-документ.
Создание XML-документа
Запустите Блокнот или другой текстовый редактор.
Скопируйте и вставьте следующие XML-данные в текстовый редактор:
<?xml version="1.0" encoding="UTF-8"?> <ListBoxData> <CategoriesAndProducts> <Categories>Seafood</Categories> <Products> <Product>Crab meat</Product> </Products> <Products> <Product>Salmon</Product> </Products> </CategoriesAndProducts> <CategoriesAndProducts> <Categories>Dairy</Categories> <Products> <Product>Chocolate milk</Product> </Products> <Products> <Product>Cheddar</Product> </Products> </CategoriesAndProducts> </ListBoxData>Сохраните файл на компьютере как listBoxData.xml.
Теперь, когда вы создали XML-документ, его можно подключить к шаблону формы. При этом будет создан дополнительный источник данных.
Подключение XML-документа к шаблону формы
- В меню Сервис выберите пункт Подключения к данным.
- В диалоговом окне Подключения к данным нажмите кнопку Добавить.
- В мастере подключения к данным щелкните Получить данные, а затем нажмите кнопку Далее.
- На следующей странице мастера щелкните XML-документ, а затем нажмите кнопку Далее.
- На следующей странице мастера нажмите кнопку Обзор, выберите файлlistBoxData.xml , сохраненный на компьютере, и нажмите кнопку Открыть.
- На следующей странице мастера щелкните Включить данные в качестве файла ресурсов в шаблон формы или часть шаблона, а затем нажмите кнопку Далее.
- На следующей странице мастера в поле Введите имя для этого подключения к данным введите listBoxDataXMLFile.
- Установите флажок Автоматически получать данные при открытии формы проверка. Это гарантирует, что данные списка будут доступны при каждом открытии формы, а не требовать от пользователя запрашивать их.
- Нажмите Готово.
- В диалоговом окне Подключения к данным нажмите кнопку Закрыть.
Теперь вы можете подключить первое поле списка в шаблоне формы к данным в XML-документе.
Подключение первого списка к данным
В шаблоне формы дважды щелкните раскрывающийся список, который вы вставили ранее.
Откройте вкладку Данные.
В диалоговом окне Свойства раскрывающегося списка в разделе Записи списка щелкните Поиск значений из внешнего источника данных.
В поле Источник данных щелкните listBoxDataXMLFile.
Щелкните Выбрать XPath
рядом с полем Записи .В диалоговом окне Выбор поля или группы в группе CategoriesAndProducts щелкните поле Категории .
Примечание
Желтый фон в диалоговом окне Выбор поля или группы указывает, что вы работаете с дополнительным источником данных.
Нажмите кнопку ОК два раза.
Теперь вам придется подключить второе поле списка к XML-документу. При подключении к данным необходимо применить фильтр ко второму списку. Этот фильтр заполнит второй список соответствующими продуктами в зависимости от категории, выбранной в первом списке. Фильтр сравнивает значение, выбранное в первом списке (поле listBox1), со списком категорий, сохраненным в форме (поле Категория).
Подключение второго списка к данным
- В шаблоне формы дважды щелкните стандартный список, который вы вставили ранее.
- Откройте вкладку Данные.
- В диалоговом окне Свойства списка в разделе Записи списка щелкните Поиск значений из внешнего источника данных.
- В поле Источник данных щелкните listBoxDataXMLFile.
- Щелкните Выбрать XPath
рядом с полем Записи . - В диалоговом окне Выбор поля или группы в группе КатегорииAndProducts разверните группу Продукты и щелкните поле Продукт .
- Щелкните Фильтр данных.
- В диалоговом окне Фильтрация данных нажмите кнопку Добавить.
- В диалоговом окне Указание условий фильтра щелкните Выбрать поле или группу в первом поле.
- В поле Источник данных в диалоговом окне Выбор поля или группы нажмите кнопку Главная.
- Щелкните listBox1 и нажмите кнопку ОК.
- В диалоговом окне Указание условий фильтра щелкните Выбрать поле или группу в третьем поле.
- В поле Источник данных в диалоговом окне Выбор поля или группы щелкните listBoxDataXMLFile (вторичный) и выберите Категории.
- Закройте все диалоговые окна с помощью кнопки ОК.
Теперь, когда вы подключили второе поле списка к XML-документу и применили фильтр, вы можете протестировать списки, чтобы убедиться, что они работают правильно.
Тестирование списков
Чтобы проверить изменения, нажмите кнопку Просмотр на стандартной панели инструментов или нажмите клавиши CTRL+SHIFT+B.
В раскрывающемся списке щелкните Морепродукты. В стандартном списке должна отображаться только пустая строка, мясо краба и лосось.
Примечание
Пустая строка позволяет пользователям очистить свой выбор из списка.
Если списки работают неправильно, проверьте фильтр для второго списка, чтобы убедиться, что поле listBox1 сравнивается с полем Категория .
Подключение к базе данных
В этом разделе вы узнаете, как создать подключение к данным к двум таблицам в базе данных Access. Для этого необходимо связать списки в шаблоне формы с базой данных, а затем применить фильтр ко второму списку, чтобы список, отображаемый во втором списке, изменился соответствующим образом в зависимости от значения, выбранного в первом списке. В этом примере предполагается, что база данных Access содержит две таблицы с именами Категории и Продукты, а две таблицы связаны друг с другом полем CategoryID, которое используется в каждой таблице.
Таблица категорий
| КодКатегории | CategoryName |
|---|---|
| 1 | Морепродукты |
| 2 | Молоко |
Таблица Products
| Productid | КодКатегории | ProductName |
|---|---|---|
| 1 | 1 | Мясо краба |
| 2 | 1 | Лосось |
| 3 | 2 | Шоколадное молоко |
| 4 | 2 | Чеддер |
Подключение шаблона формы к источнику данных
Сначала необходимо создать подключение к данным между шаблоном формы и таблицами в базе данных. Так как данные отображаются только из базы данных, вместо того, чтобы изменять их напрямую, база данных Access будет дополнительным источником данных для шаблона формы.
В меню Сервис выберите пункт Подключения к данным.
В диалоговом окне Подключения к данным нажмите кнопку Добавить.
В мастере подключения к данным щелкните Получить данные, а затем нажмите кнопку Далее.
На следующей странице мастера щелкните База данных (Только microsoft SQL Server или Microsoft Office Access) и нажмите кнопку Далее.
На следующей странице мастера щелкните Выбрать базу данных, а затем найдите и дважды щелкните базу данных Access на жестком диске.
В диалоговом окне Выбор таблицы щелкните таблицу, содержащую данные, которые нужно отобразить в первом списке (в этом примере таблица Категорий), а затем нажмите кнопку ОК. Это указывает таблицу в качестве основной таблицы для подключения к данным.
В мастере щелкните Добавить таблицу.
В диалоговом окне Добавление таблицы или запроса щелкните таблицу, содержащую данные, которые нужно отобразить во втором списке (в этом примере таблица Products), а затем нажмите кнопку Далее.
В диалоговом окне Изменение связи убедитесь, что поля подключения верны. В этом примере таблицы связаны друг с другом полем CategoryID.
Совет
Если соединительные поля неверны, выберите поля и нажмите кнопку Удалить связь. Затем нажмите кнопку Добавить связь, выберите нужные поля и нажмите кнопку ОК.
Нажмите Готово.
Примечание
В этом примере таблица категорий имеет отношение "один ко многим" с таблицей products, что означает, что для каждой категории может быть много продуктов. В базе данных такой тип связи обычно устанавливается с помощью ключевых полей. В этом случае поле Ключ CategoryID позволяет Access связать правильный набор продуктов с соответствующей категорией.
В мастере просмотрите структуру источника данных. Вы должны увидеть две таблицы, соединенные друг с другом: основная таблица и вторичная таблица. Чтобы просмотреть отдельные поля в таблице, выберите поле Показать столбцы таблицы проверка. Завершив проверку структуры данных, нажмите кнопку Далее.
Снимите флажок Сохранить копию данных в шаблоне формы проверка и нажмите кнопку Далее.
В поле Введите имя для этого подключения к данным на следующей странице мастера введите имя подключения к данным.
Установите флажок Автоматически получать данные при открытии формы проверка.
Нажмите кнопку Готово, а затем нажмите кнопку Закрыть в диалоговом окне Подключения к данным .
Подключение первого списка к данным
Теперь, когда вы создали подключение к дополнительному источнику данных, вы можете подключить первое поле списка в шаблоне формы к таблицам в базе данных.
В шаблоне формы дважды щелкните раскрывающийся список, который вы вставили ранее.
Откройте вкладку Данные.
В диалоговом окне Свойства раскрывающегося списка в разделе Записи списка щелкните Поиск значений из внешнего источника данных.
В поле Источник данных убедитесь, что выбрано созданное подключение к данным.
Щелкните Выбрать XPath
рядом с полем Записи .В диалоговом окне Выбор поля или группы щелкните имя таблицы, содержащей данные, которые нужно отобразить в раскрывающемся списке (в этом примере d:Categories ) и нажмите кнопку ОК.
Примечание
Желтый фон в диалоговом окне Выбор поля или группы указывает, что вы работаете с дополнительным источником данных.
Щелкните Выбрать XPath
рядом с полем Значение .В диалоговом окне Выбор поля или Группы убедитесь, что выбрано поле подключения (в этом примере :CategoryID), а затем нажмите кнопку ОК. Это значение будет сохранено, когда пользователь делает выбор в списке.
Щелкните Выбрать XPath
рядом с полем Отображаемое имя .В диалоговом окне Выбор поля или группы щелкните имя поля, которое нужно отобразить в раскрывающемся списке (в этом примере : CategoryName).
Нажмите кнопку ОК два раза.
Подключение второго списка к данным
Теперь вам придется подключить второе поле списка к базе данных. При подключении к данным необходимо применить фильтр ко второму списку. Этот фильтр заполнит второй список соответствующими значениями на основе значений, выбранных в первом списке.
В шаблоне формы дважды щелкните поле стандартного списка.
Откройте вкладку Данные.
В диалоговом окне Свойства списка в разделе Записи списка щелкните Поиск значений из внешнего источника данных.
В поле Источник данных убедитесь, что выбрано созданное подключение к данным.
Щелкните Выбрать XPath
рядом с полем Записи .В диалоговом окне Выбор поля или группы разверните основную группу (в этом примере d:Категории), а затем выберите вторичную группу, соответствующую таблице, содержащей данные, которые должны отображаться в каскадном списке (в этом примере — Products).
Щелкните Фильтр данных.
В диалоговом окне Фильтрация данных нажмите кнопку Добавить.
В диалоговом окне Указание условий фильтра в первом поле убедитесь, что выбрано соединительное поле из дополнительной таблицы (в этом примере — Products).
Важно
Если соединительные поля имеют одинаковое имя в обеих таблицах, убедитесь, что выбрано правильное. Поля из каждой таблицы сортируются в списке. Таким образом, вы можете использовать имена окружающих полей, чтобы определить, какое из них является правильным. В этом примере мы выбираем поле CategoryID, которое отображается вместе с другими полями из таблицы Products.
В третьем поле щелкните Выбрать поле или группу.
В поле Источник данных в диалоговом окне Выбор поля или группы нажмите кнопку Главная, щелкните поле listBox1 и нажмите кнопку ОК.
Теперь вы настроили фильтр, который сравнивает значение, выбранное в раскрывающемся списке (поле listBox1), со списком значений в стандартном списке.Нажмите кнопку ОК три раза, чтобы вернуться в диалоговое окно Свойства списка .
Щелкните Выбрать XPath
рядом с полем Значение .В диалоговом окне Выбор поля или группы выберите значение, которое нужно сохранить при выборе пользователем в списке. В этом примере мы хотим сохранить поле ProductID для последующего использования. Поэтому мы выбираем группу :P roductID и нажмите кнопку ОК.
Щелкните Выбрать XPath
рядом с полем Отображаемое имя .В диалоговом окне Выбор поля или Группы щелкните имя поля, которое нужно отобразить в списке (в этом примере :P roductName).
Нажмите кнопку ОК два раза.
Тестирование списков
Теперь, когда вы подключили второе поле списка к базе данных и применили фильтр, вы можете протестировать списки, чтобы убедиться, что они работают правильно.
- Чтобы проверить изменения, нажмите кнопку Просмотр на стандартной панели инструментов или нажмите клавиши CTRL+SHIFT+B.
- Выберите значение в раскрывающемся списке. В стандартном списке должны отображаться соответствующие значения из дополнительной таблицы в зависимости от выбранного поля подключения.
Совет
Если списки работают неправильно, проверьте фильтр для второго списка, чтобы убедиться, что поле listBox1 сравнивается с полем CategoryID .