Создание каскадного списка

Применяется к
InfoPath 2010 InfoPath 2013

Каскадные списки помогают пользователям быстрее заполнять формы и обеспечивать правильность ввода данных пользователями. В этой статье описывается создание и заполнение каскадных списков данными. В Microsoft Office InfoPath можно заполнить список данными, которые используют значения из формы, значения из внешнего xml-документа или значения из базы данных Microsoft Office Access.

В этой статье

Что такое каскадный список?

Каскадный список — это поле списка с параметрами, которые изменяются в зависимости от значения, выбранного пользователем в другом списке. Например, если пользователь щелкает приправы в поле Категории , показанном на следующем рисунке, в поле Продукты отобразится список приправ.

ebf717d3-11f3-4d0c-81eb-179b8412400d

В следующих разделах показано, как создать шаблон формы с двумя списками, где второй список фильтруется по значению, выбранному пользователем в первом списке. При изменении значения в первом списке фильтр автоматически применяется ко второму списку, который изменяет его значения.

Совместимость

Фильтры можно использовать только в шаблонах форм, которые предназначены для заполнения в InfoPath. Фильтры недоступны в шаблонах форм, совместимых с браузером.

К началу страницы

Шаг 1. Вставка каскадного списка

Чтобы создать каскадный список, необходимо вставить два списка в шаблон формы.

Примечание

При вставке каскадного списка в шаблон формы убедитесь, что эти два списка не находятся в повторяющихся разделах или повторяющейся таблице.

  1. Если область задач Элементы управления не отображается, щелкните Другие элементы управления в меню Вставка или нажмите клавиши ALT+I, C.
  2. В разделе Вставка элементов управления в области задач Элементы управления щелкните Раскрывающийся список. Когда пользователь заполняет форму, основанную на шаблоне формы, выбор в этом раскрывающемся списке определяет варианты, доступные во втором списке.
  3. Щелкните Поле списка. Теперь шаблон формы должен содержать раскрывающийся список и стандартный список.
    93d60c8d-1ecb-418a-94df-e1a063848bf6
  4. Дважды щелкните раскрывающийся список, вставленный в шаблон формы на шаге 2.
  5. В диалоговом окне Свойства раскрывающегося списка откройте вкладку Данные .
  6. В поле Имя поля введите listBox1 и нажмите кнопку ОК.
  7. Дважды щелкните поле списка, вставленное в шаблон формы на шаге 3.
  8. В диалоговом окне Свойства поля списка перейдите на вкладку Данные .
  9. В поле Имя поля введите listBox2Cascade и нажмите кнопку ОК.

К началу страницы

Шаг 2. Предоставление данных

Теперь, когда вы вставили поля списка в шаблон формы, необходимо указать данные, которые они будут отображать. Затем необходимо применить фильтр, чтобы выбор во втором списке зависел от выбора пользователя в первом списке.

В этом разделе объясняется, как подключить поля списка к данным с помощью трех распространенных методов: добавление данных в саму форму; подключение формы к существующему XML-документу, содержащему данные; или подключение формы к базе данных, содержащей данные. Чтобы завершить создание каскадного списка, щелкните метод, который вы хотите использовать в следующем списке.

Подключение к данным в форме

В этом разделе вы узнаете, как заполнить поля списка данными из формы. Для этого необходимо сначала настроить поля в шаблоне формы, чтобы можно было ввести имена категорий и набор продуктов для каждой категории.

Настройка полей в шаблоне формы

  1. Если область задач Источник данных не отображается, щелкните Источник данных в меню Вид .
  2. В области задач Источник данных щелкните правой кнопкой мыши группу myFields и выберите команду Добавить.
  3. В поле Имя в диалоговом окне Добавление поля или группы введите CategoriesAndProducts.
  4. В списке Тип щелкните Группировать.
  5. Выберите поле Повторяющиеся проверка и нажмите кнопку ОК.
  6. В области задач Источник данных щелкните правой кнопкой мыши группу CategoriesAndProducts .
  7. В поле Имя в диалоговом окне Добавление поля или группы введите Категория и нажмите кнопку ОК. Это поле будет содержать имена категорий для первого списка.
  8. Щелкните правой кнопкой мыши группу CategoriesAndProducts и выберите команду Добавить.
  9. В поле Имя в диалоговом окне Добавление поля или группы введите Продукт.
  10. Выберите поле Повторяющиеся проверка и нажмите кнопку ОК. Это поле будет содержать имена продуктов для второго списка.

Так как это поле списка заполнено данными из формы, данные необходимо добавить в форму. Для этого необходимо создать значения по умолчанию для полей Продукт и Категория .

Совет

Вы также можете создавать списки, отображающие значения, которые пользователи сами вводит в форме. Для этого свяжите поле списка с полями, привязанными к элементам управления в форме. Когда пользователь вводит значения в элементы управления, параметры в списке изменяются.

Создание значений по умолчанию

  1. В меню Сервис выберите пункт Значения по умолчанию.
  2. В диалоговом окне Изменение значений по умолчанию в группе КатегорииAndProducts выберите поле Категория (не очищайте поле проверка), а затем в поле Значение по умолчанию введите Морепродукты.
  3. Выберите поле Продукт (не очищайте поле проверка), а затем в поле Значение по умолчанию введите Crab meat.
  4. Щелкните правой кнопкой мыши поле Продукт и выберите команду Добавить другой продукт выше. Это позволяет добавить второй продукт для морепродуктов в качестве значения по умолчанию.
  5. Щелкните правой кнопкой мыши второй экземпляр поля Продукт (не очищайте поле проверка), а затем в поле Значение по умолчанию введите Salmon.
  6. Щелкните правой кнопкой мыши группу CategoriesAndProducts и выберите добавить другие категорииAndProducts ниже. Это позволяет добавить вторую категорию в качестве значения по умолчанию.
  7. Используйте предыдущие шаги, чтобы указать значения по умолчанию для второго экземпляра полей Категория и Продуктсоответственно Молочные продукты, Чеддер и Шоколадное молоко.
  8. Нажмите кнопку ОК.

Теперь, когда вы ввели значения по умолчанию для полей Продукт и Категория , вы можете подключить первое поле списка к только что введенным данным.

Подключение первого списка к данным

  1. В шаблоне формы дважды щелкните раскрывающийся список, который вы вставили ранее.
  2. Откройте вкладку Данные.
  3. В диалоговом окне Свойства раскрывающегося списка в разделе Записи списка щелкните Поиск значений в источнике данных формы.
  4. Щелкните Выбрать XPath038c9c35-ca90-4bf1-a2e2-2342022bdbc1 рядом с полем Записи .
  5. В диалоговом окне Выбор поля или группы в группе КатегорииAndProducts щелкните поле Категория и нажмите кнопку ОК два раза.

Теперь необходимо подключить второе поле списка к данным. При подключении к данным необходимо применить фильтр ко второму списку. Этот фильтр заполнит второй список соответствующими продуктами в зависимости от категории, выбранной в первом списке. Фильтр сравнивает значение, выбранное в первом списке (поле listBox1), со списком категорий, сохраненным в форме (поле Категория).

Подключение второго списка к данным

  1. В шаблоне формы дважды щелкните стандартный список, который вы вставили ранее.
  2. Откройте вкладку Данные.
  3. В диалоговом окне Свойства списка в разделе Записи списка щелкните Поиск значений в источнике данных формы.
  4. Щелкните Выбрать XPath038c9c35-ca90-4bf1-a2e2-2342022bdbc1 рядом с полем Записи .
  5. В диалоговом окне Выбор поля или группы в группе КатегорииAndProducts щелкните поле Продукт , а затем щелкните Фильтр данных.
  6. В диалоговом окне Фильтрация данных нажмите кнопку Добавить.
  7. В диалоговом окне Указание условий фильтра щелкните Выбрать поле или группу в первом поле.
  8. В диалоговом окне Выбор поля или группы выберите listBox1 и нажмите кнопку ОК.
  9. В диалоговом окне Указание условий фильтра щелкните Выбрать поле или группу в третьем поле.
  10. В диалоговом окне Выбор поля или группы щелкните поле Категория , а затем нажмите кнопку ОК , чтобы закрыть все открытые диалоговые окна.

Теперь, когда вы подключили второе поле списка к данным и применили фильтр, вы можете протестировать списки, чтобы убедиться, что они работают правильно.

Тестирование списков

  1. Чтобы проверить изменения, нажмите кнопку Просмотр на стандартной панели инструментов или нажмите клавиши CTRL+SHIFT+B.

  2. В раскрывающемся списке щелкните Морепродукты. В стандартном списке должна отображаться пустая строка, мясо краба и лосось.

    Примечание

    Пустая строка позволяет пользователям очистить свой выбор из списка.

Если списки работают неправильно, проверьте фильтр для второго списка, чтобы убедиться, что поле listBox1 сравнивается с полем Категория .

Начало раздела

Подключение к внешнему XML-документу

В этом разделе вы узнаете, как создать подключение данных к XML-документу, который содержит значения продуктов и категорий. XML-документ будет дополнительным источником данных. Чтобы создать это подключение к данным, необходимо создать XML-документ, связать списки в шаблоне формы с XML-документом, а затем применить фильтр ко второму списку, чтобы список продуктов изменился соответствующим образом.

Прежде чем связать форму с дополнительным источником данных, необходимо создать XML-документ.

Создание XML-документа

  1. Запустите Блокнот или другой текстовый редактор.

  2. Скопируйте и вставьте следующие 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>
    
    
  3. Сохраните файл на компьютере как listBoxData.xml.

Теперь, когда вы создали XML-документ, его можно подключить к шаблону формы. При этом будет создан дополнительный источник данных.

Подключение XML-документа к шаблону формы

  1. В меню Сервис выберите пункт Подключения к данным.
  2. В диалоговом окне Подключения к данным нажмите кнопку Добавить.
  3. В мастере подключения к данным щелкните Получить данные, а затем нажмите кнопку Далее.
  4. На следующей странице мастера щелкните XML-документ, а затем нажмите кнопку Далее.
  5. На следующей странице мастера нажмите кнопку Обзор, выберите файлlistBoxData.xml , сохраненный на компьютере, и нажмите кнопку Открыть.
  6. На следующей странице мастера щелкните Включить данные в качестве файла ресурсов в шаблон формы или часть шаблона, а затем нажмите кнопку Далее.
  7. На следующей странице мастера в поле Введите имя для этого подключения к данным введите listBoxDataXMLFile.
  8. Установите флажок Автоматически получать данные при открытии формы проверка. Это гарантирует, что данные списка будут доступны при каждом открытии формы, а не требовать от пользователя запрашивать их.
  9. Нажмите Готово.
  10. В диалоговом окне Подключения к данным нажмите кнопку Закрыть.

Теперь вы можете подключить первое поле списка в шаблоне формы к данным в XML-документе.

Подключение первого списка к данным

  1. В шаблоне формы дважды щелкните раскрывающийся список, который вы вставили ранее.

  2. Откройте вкладку Данные.

  3. В диалоговом окне Свойства раскрывающегося списка в разделе Записи списка щелкните Поиск значений из внешнего источника данных.

  4. В поле Источник данных щелкните listBoxDataXMLFile.

  5. Щелкните Выбрать XPath038c9c35-ca90-4bf1-a2e2-2342022bdbc1 рядом с полем Записи .

  6. В диалоговом окне Выбор поля или группы в группе CategoriesAndProducts щелкните поле Категории .

    Примечание

    Желтый фон в диалоговом окне Выбор поля или группы указывает, что вы работаете с дополнительным источником данных.

  7. Нажмите кнопку ОК два раза.

Теперь вам придется подключить второе поле списка к XML-документу. При подключении к данным необходимо применить фильтр ко второму списку. Этот фильтр заполнит второй список соответствующими продуктами в зависимости от категории, выбранной в первом списке. Фильтр сравнивает значение, выбранное в первом списке (поле listBox1), со списком категорий, сохраненным в форме (поле Категория).

Подключение второго списка к данным

  1. В шаблоне формы дважды щелкните стандартный список, который вы вставили ранее.
  2. Откройте вкладку Данные.
  3. В диалоговом окне Свойства списка в разделе Записи списка щелкните Поиск значений из внешнего источника данных.
  4. В поле Источник данных щелкните listBoxDataXMLFile.
  5. Щелкните Выбрать XPath038c9c35-ca90-4bf1-a2e2-2342022bdbc1 рядом с полем Записи .
  6. В диалоговом окне Выбор поля или группы в группе КатегорииAndProducts разверните группу Продукты и щелкните поле Продукт .
  7. Щелкните Фильтр данных.
  8. В диалоговом окне Фильтрация данных нажмите кнопку Добавить.
  9. В диалоговом окне Указание условий фильтра щелкните Выбрать поле или группу в первом поле.
  10. В поле Источник данных в диалоговом окне Выбор поля или группы нажмите кнопку Главная.
  11. Щелкните listBox1 и нажмите кнопку ОК.
  12. В диалоговом окне Указание условий фильтра щелкните Выбрать поле или группу в третьем поле.
  13. В поле Источник данных в диалоговом окне Выбор поля или группы щелкните listBoxDataXMLFile (вторичный) и выберите Категории.
  14. Закройте все диалоговые окна с помощью кнопки ОК.

Теперь, когда вы подключили второе поле списка к XML-документу и применили фильтр, вы можете протестировать списки, чтобы убедиться, что они работают правильно.

Тестирование списков

  1. Чтобы проверить изменения, нажмите кнопку Просмотр на стандартной панели инструментов или нажмите клавиши CTRL+SHIFT+B.

  2. В раскрывающемся списке щелкните Морепродукты. В стандартном списке должна отображаться только пустая строка, мясо краба и лосось.

    Примечание

    Пустая строка позволяет пользователям очистить свой выбор из списка.

Если списки работают неправильно, проверьте фильтр для второго списка, чтобы убедиться, что поле listBox1 сравнивается с полем Категория .

Начало раздела

Подключение к базе данных

В этом разделе вы узнаете, как создать подключение к данным к двум таблицам в базе данных Access. Для этого необходимо связать списки в шаблоне формы с базой данных, а затем применить фильтр ко второму списку, чтобы список, отображаемый во втором списке, изменился соответствующим образом в зависимости от значения, выбранного в первом списке. В этом примере предполагается, что база данных Access содержит две таблицы с именами Категории и Продукты, а две таблицы связаны друг с другом полем CategoryID, которое используется в каждой таблице.

Таблица категорий 

КодКатегории CategoryName
1 Морепродукты
2 Молоко

Таблица Products 

Productid КодКатегории ProductName
1 1 Мясо краба
2 1 Лосось
3 2 Шоколадное молоко
4 2 Чеддер

Подключение шаблона формы к источнику данных

Сначала необходимо создать подключение к данным между шаблоном формы и таблицами в базе данных. Так как данные отображаются только из базы данных, вместо того, чтобы изменять их напрямую, база данных Access будет дополнительным источником данных для шаблона формы.

  1. В меню Сервис выберите пункт Подключения к данным.

  2. В диалоговом окне Подключения к данным нажмите кнопку Добавить.

  3. В мастере подключения к данным щелкните Получить данные, а затем нажмите кнопку Далее.

  4. На следующей странице мастера щелкните База данных (Только microsoft SQL Server или Microsoft Office Access) и нажмите кнопку Далее.

  5. На следующей странице мастера щелкните Выбрать базу данных, а затем найдите и дважды щелкните базу данных Access на жестком диске.

  6. В диалоговом окне Выбор таблицы щелкните таблицу, содержащую данные, которые нужно отобразить в первом списке (в этом примере таблица Категорий), а затем нажмите кнопку ОК. Это указывает таблицу в качестве основной таблицы для подключения к данным.

  7. В мастере щелкните Добавить таблицу.

  8. В диалоговом окне Добавление таблицы или запроса щелкните таблицу, содержащую данные, которые нужно отобразить во втором списке (в этом примере таблица Products), а затем нажмите кнопку Далее.

  9. В диалоговом окне Изменение связи убедитесь, что поля подключения верны. В этом примере таблицы связаны друг с другом полем CategoryID.

    Совет

    Если соединительные поля неверны, выберите поля и нажмите кнопку Удалить связь. Затем нажмите кнопку Добавить связь, выберите нужные поля и нажмите кнопку ОК.

  10. Нажмите Готово.

    Примечание

    В этом примере таблица категорий имеет отношение "один ко многим" с таблицей products, что означает, что для каждой категории может быть много продуктов. В базе данных такой тип связи обычно устанавливается с помощью ключевых полей. В этом случае поле Ключ CategoryID позволяет Access связать правильный набор продуктов с соответствующей категорией.

  11. В мастере просмотрите структуру источника данных. Вы должны увидеть две таблицы, соединенные друг с другом: основная таблица и вторичная таблица. Чтобы просмотреть отдельные поля в таблице, выберите поле Показать столбцы таблицы проверка. Завершив проверку структуры данных, нажмите кнопку Далее.

  12. Снимите флажок Сохранить копию данных в шаблоне формы проверка и нажмите кнопку Далее.

  13. В поле Введите имя для этого подключения к данным на следующей странице мастера введите имя подключения к данным.

  14. Установите флажок Автоматически получать данные при открытии формы проверка.

  15. Нажмите кнопку Готово, а затем нажмите кнопку Закрыть в диалоговом окне Подключения к данным .

Подключение первого списка к данным

Теперь, когда вы создали подключение к дополнительному источнику данных, вы можете подключить первое поле списка в шаблоне формы к таблицам в базе данных.

  1. В шаблоне формы дважды щелкните раскрывающийся список, который вы вставили ранее.

  2. Откройте вкладку Данные.

  3. В диалоговом окне Свойства раскрывающегося списка в разделе Записи списка щелкните Поиск значений из внешнего источника данных.

  4. В поле Источник данных убедитесь, что выбрано созданное подключение к данным.

  5. Щелкните Выбрать XPath038c9c35-ca90-4bf1-a2e2-2342022bdbc1 рядом с полем Записи .

  6. В диалоговом окне Выбор поля или группы щелкните имя таблицы, содержащей данные, которые нужно отобразить в раскрывающемся списке (в этом примере d:Categories ) и нажмите кнопку ОК.

    Примечание

    Желтый фон в диалоговом окне Выбор поля или группы указывает, что вы работаете с дополнительным источником данных.

  7. Щелкните Выбрать XPath038c9c35-ca90-4bf1-a2e2-2342022bdbc1 рядом с полем Значение .

  8. В диалоговом окне Выбор поля или Группы убедитесь, что выбрано поле подключения (в этом примере :CategoryID), а затем нажмите кнопку ОК. Это значение будет сохранено, когда пользователь делает выбор в списке.

  9. Щелкните Выбрать XPath038c9c35-ca90-4bf1-a2e2-2342022bdbc1 рядом с полем Отображаемое имя .

  10. В диалоговом окне Выбор поля или группы щелкните имя поля, которое нужно отобразить в раскрывающемся списке (в этом примере : CategoryName).

  11. Нажмите кнопку ОК два раза.

Подключение второго списка к данным

Теперь вам придется подключить второе поле списка к базе данных. При подключении к данным необходимо применить фильтр ко второму списку. Этот фильтр заполнит второй список соответствующими значениями на основе значений, выбранных в первом списке.

  1. В шаблоне формы дважды щелкните поле стандартного списка.

  2. Откройте вкладку Данные.

  3. В диалоговом окне Свойства списка в разделе Записи списка щелкните Поиск значений из внешнего источника данных.

  4. В поле Источник данных убедитесь, что выбрано созданное подключение к данным.

  5. Щелкните Выбрать XPath038c9c35-ca90-4bf1-a2e2-2342022bdbc1 рядом с полем Записи .

  6. В диалоговом окне Выбор поля или группы разверните основную группу (в этом примере d:Категории), а затем выберите вторичную группу, соответствующую таблице, содержащей данные, которые должны отображаться в каскадном списке (в этом примере — Products).

  7. Щелкните Фильтр данных.

  8. В диалоговом окне Фильтрация данных нажмите кнопку Добавить.

  9. В диалоговом окне Указание условий фильтра в первом поле убедитесь, что выбрано соединительное поле из дополнительной таблицы (в этом примере — Products).

    Важно

    Если соединительные поля имеют одинаковое имя в обеих таблицах, убедитесь, что выбрано правильное. Поля из каждой таблицы сортируются в списке. Таким образом, вы можете использовать имена окружающих полей, чтобы определить, какое из них является правильным. В этом примере мы выбираем поле CategoryID, которое отображается вместе с другими полями из таблицы Products.

  10. В третьем поле щелкните Выбрать поле или группу.

  11. В поле Источник данных в диалоговом окне Выбор поля или группы нажмите кнопку Главная, щелкните поле listBox1 и нажмите кнопку ОК.
    Теперь вы настроили фильтр, который сравнивает значение, выбранное в раскрывающемся списке (поле listBox1), со списком значений в стандартном списке.

  12. Нажмите кнопку ОК три раза, чтобы вернуться в диалоговое окно Свойства списка .

  13. Щелкните Выбрать XPath038c9c35-ca90-4bf1-a2e2-2342022bdbc1 рядом с полем Значение .

  14. В диалоговом окне Выбор поля или группы выберите значение, которое нужно сохранить при выборе пользователем в списке. В этом примере мы хотим сохранить поле ProductID для последующего использования. Поэтому мы выбираем группу :P roductID и нажмите кнопку ОК.

  15. Щелкните Выбрать XPath038c9c35-ca90-4bf1-a2e2-2342022bdbc1 рядом с полем Отображаемое имя .

  16. В диалоговом окне Выбор поля или Группы щелкните имя поля, которое нужно отобразить в списке (в этом примере :P roductName).

  17. Нажмите кнопку ОК два раза.

Тестирование списков

Теперь, когда вы подключили второе поле списка к базе данных и применили фильтр, вы можете протестировать списки, чтобы убедиться, что они работают правильно.

  1. Чтобы проверить изменения, нажмите кнопку Просмотр на стандартной панели инструментов или нажмите клавиши CTRL+SHIFT+B.
  2. Выберите значение в раскрывающемся списке. В стандартном списке должны отображаться соответствующие значения из дополнительной таблицы в зависимости от выбранного поля подключения.

Совет

Если списки работают неправильно, проверьте фильтр для второго списка, чтобы убедиться, что поле listBox1 сравнивается с полем CategoryID .

Начало раздела

К началу страницы