注意: 我们希望能够尽快以你的语言为你提供最新的帮助内容。 本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此内容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗? 请在此处查看本文的 英文版本 以便参考。
级联列表框帮助用户更快地填写表单,并帮助确保用户正确输入数据。本文介绍如何创建和填充数据级联列表框。Microsoft Office InfoPath,您可以导入带有使用窗体、 值从外部可扩展标记语言 (XML) 文档或 Microsoft Office Access 数据库中的值中的值的数据的列表。
本文内容
级联列表框是什么?
级联列表框的列表框与更改基于用户选择另一个列表框中的值的选项。例如,如果用户单击调味品如下图所示类别框中,产品框中将显示调味品列表。
以下各节介绍了如何设计表单模板与两个列表框中,筛选第二个列表框中的位置基于用户选择从第一个列表框中的值。当第一个列表框中的值更改时,筛选器会自动应用到第二个列表框中,这将更改它的值。
兼容性的注意事项
只能在旨在在 InfoPath 中填写的表单模板中,可以使用筛选器。筛选器不可用在浏览器兼容的表单模板。
步骤 1: 插入级联列表框
若要创建级联列表框,必须在表单模板中插入两个列表框。
注意: 表单模板中插入级联列表框时,请确保重复节或重复表中没有的两个列表框。
-
如果看不到“控件”任务窗格,请单击“插入”菜单上的“其他控件”,或按 Alt+I、C。
-
在控件任务窗格中的插入控件,下单击下拉列表框。当用户填写基于表单模板的窗体时,此下拉列表框中的选项将确定在第二个列表框中都可用的选项。
-
单击列表框。表单模板现在应包含一个下拉列表框和标准列表框。
-
双击您在步骤 2 中的表单模板中插入的下拉列表框。
-
在下拉列表框属性对话框中,单击数据选项卡。
-
在字段名称框中,键入listBox1,,然后单击确定。
-
双击您在步骤 3 中的表单模板中插入的列表框。
-
在列表框属性对话框中,单击数据选项卡。
-
在字段名称框中,键入listBox2Cascade,,然后单击确定。
步骤 2: 提供数据
既然您已插入的列表框中的表单模板,您必须提供他们将显示的数据。然后,以便在第二个列表框中选择基于用户选择的第一个列表框中,您必须应用筛选器 。
本节介绍如何使用三种常用方法连接到数据的列表框: 将数据添加到窗体,然后重试。将表单连接到现有的 XML 文档包含的数据;或连接到的数据库中包含数据的窗体。若要完成创建级联列表框中,单击要使用下面的列表中的方法。
连接到窗体中的数据
在此部分中,您将了解如何使用填充列表框表单中的数据。若要执行此操作,您必须首先配置域在表单模板,以便您可以输入的类别名称和一组产品的每个类别。
配置表单模板中的字段
-
如果未显示数据源任务窗格,在视图菜单上单击数据源。
-
在数据源任务窗格中的myFields组中,右键单击,然后单击添加。
-
在名称框中,在添加域或组对话框中,键入类别和产品。
-
在类型列表中,单击组。
-
选择重复复选框,然后单击确定。
-
在数据源任务窗格中,右键单击类别和产品组中。
-
在名称框中,在添加域或组对话框中,键入类别,,然后单击确定。此字段将包含第一个列表框的类别的名称。
-
类别和产品组中,右键单击,然后单击添加。
-
在名称框中,在添加域或组对话框中,键入产品。
-
选择重复复选框,然后单击确定。此字段将包含第二个列表框中的产品的名称。
此列表框中填入表单中的数据,因为数据必须添加到窗体。若要执行此操作,则必须创建产品和类别字段的默认值。
提示
您还可以创建显示窗体中的用户键入自己的值的列表框。若要执行此操作,将对绑定到窗体中的控件的字段相关联列表框。当用户在控件中输入值时,更改列表框中的选项。
创建默认值
-
在工具菜单上,单击默认值。
-
在编辑默认值对话框中的类别和产品组中,选择类别字段 (不清除复选框),然后在默认值框中,键入数据项。
-
选择产品字段 (不清除复选框),然后在默认值框中,键入蟹肉。
-
产品字段中,右键单击,然后单击添加另一个以上的产品。这允许您为默认值为数据项添加第二个产品。
-
右键单击产品字段的第二个实例 (不清除复选框),然后在默认值框中,键入鲑鱼。
-
类别和产品组中,右键单击,然后单击添加下面的另一种类别和产品。这允许您为默认值添加第二个类别。
-
使用上述步骤分别指定的类别和产品字段牛奶、切达干酪和巧克力奶,第二个实例的默认值。
-
单击“确定”。
现在,您的产品和类别字段输入默认值,您可以连接到您刚输入的数据的第一个列表框。
连接到的数据的第一个列表框
-
在表单模板中,双击以前插入下拉列表框。
-
单击“数据”选项卡。
-
下拉列表框属性对话框中,在单击在列表框项下的窗体的数据源中查找值。
-
单击选择 XPath 项框旁边。
-
在选择域或组对话框中的类别和产品组中,单击类别字段,然后单击确定两次。
现在您必须连接到数据的第二个列表框。同时使此数据连接,要将筛选器应用于第二个列表框中。此筛选器将填充第二个列表框中相应的产品,基于第一个列表框中选择的类别。筛选器将选择第一个列表框 (listBox1 域) 与列表窗体 (分类字段) 中保存的类别中的值进行比较。
连接到的数据的第二个列表框
-
在表单模板中,双击您以前插入的标准列表框。
-
单击“数据”选项卡。
-
列表框属性对话框中,在单击在列表框项下的窗体的数据源中查找值。
-
单击选择 XPath 项框旁边。
-
在选择域或组对话框中的类别和产品组中,单击产品字段,然后单击筛选数据。
-
在筛选数据对话框中,单击添加。
-
在指定筛选条件对话框中,单击第一个框中选择域或组。
-
在选择域或组对话框中,单击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 项框旁边。
-
在选择域或组对话框中的类别和产品组中,单击类别字段。
注意: 在选择域或组对话框中的黄色背景指明您正在处理辅助数据源。
-
单击“确定”两次。
现在,您将需要连接到 XML 文档的第二个列表框。同时使此数据连接,要将筛选器应用于第二个列表框中。此筛选器将填充第二个列表框中相应的产品,基于第一个列表框中选择的类别。筛选器将选择第一个列表框 (listBox1 域) 与列表窗体 (分类字段) 中保存的类别中的值进行比较。
连接到的数据的第二个列表框
-
在表单模板中,双击您以前插入的标准列表框。
-
单击“数据”选项卡。
-
在列表框属性对话框中,单击在列表框项下的从外部数据源查找值。
-
在数据源框中,单击listBoxDataXMLFile。
-
单击选择 XPath 项框旁边。
-
在选择域或组对话框中的类别和产品组中,展开产品组中,,然后单击产品字段。
-
单击筛选数据。
-
在筛选数据对话框中,单击添加。
-
在指定筛选条件对话框中,单击第一个框中选择域或组。
-
在数据源框中,在选择域或组对话框中,单击主。
-
单击listBox1,,然后单击确定。
-
在指定筛选条件对话框中,单击第三个框中选择域或组。
-
在数据源框中,在选择域或组对话框中,单击listBoxDataXMLFile (辅助),,然后单击类别。
-
单击“确定”,关闭所有打开的对话框。
既然您已连接到 XML 文档的第二个列表框,并应用了筛选器,您准备测试列表框,以确保它们能正常工作。
测试列表框
-
要测试所做的更改,请单击“常用”工具栏上的“预览”,或者按 Ctrl+Shift+B。
-
在下拉列表框中,单击数据项。仅空白行、 蟹肉和鲑鱼应显示标准列表框。
注意: 空白行允许用户清除其选择列表框中。
如果无法正常工作的列表框,请查看第二个列表框,以确保它将分类字段的listBox1字段进行比较的筛选器。
连接到数据库
在此部分中,您将了解如何在 Access 数据库中创建数据连接到两个表。若要执行此操作,,您可以关联数据库、 表单模板中的列表框,然后将筛选器应用于第二个列表框中,以便适合显示在第二个列表框中更改列表基于所选的第一个列表框中的值。对于此示例中,我们将假设 Access 数据库中包含两个表名为类别和产品,并通过类别 id 字段中,每个表中使用彼此相关的两个表。
类别表
类别 id |
类别名称 |
1 |
数据项 |
2 |
奶制品 |
产品表
产品 Id |
类别 id |
产品名称 |
1 |
1 |
蟹肉 |
2 |
1 |
鲑鱼 |
3 |
2 |
巧克力奶 |
4 |
2 |
切达干酪 |
连接到数据源的表单模板
首先,您必须在数据库中创建表单模板和表之间的数据连接。因为您仅显示来自数据库,而不是直接,修改的数据的 Access 数据库将表单模板的辅助数据源。
-
在工具菜单上,单击数据连接。
-
在数据连接对话框中,单击添加。
-
在数据连接向导中,单击接收数据,然后单击下一步。
-
在向导的下一页上,单击数据库 (Microsoft SQL Server 或 Microsoft Office Access),然后单击下一步。
-
在向导的下一页上,单击选择数据库,然后通过浏览找到并双击您的硬盘上的 Access 数据库。
-
在选择表对话框中,单击包含您要在 (在本示例中,类别表),第一个列表中显示的数据的表,然后单击确定。此数据连接的主表指定的表。
-
在向导中,单击添加表。
-
在添加表或查询对话框中,单击包含您要在 (在本示例中,产品表),第二个列表中显示的数据的表,然后单击下一步。
-
在编辑关系对话框中,确保连接域正确。在此示例中,表相关彼此的类别 Id 字段。
提示: 如果连接域不正确,请选择字段,,然后单击删除关系。单击添加关系,选择正确的字段,然后,然后单击确定。
-
单击“完成”。
注意: 本示例中,在类别表包含产品表,这意味着,每隔一个类别可以有多个产品的一对多关系。在数据库中,这种关系通常建立使用键字段。在这种情况下,类别 id 键字段,可以访问正确的产品组相关联的适当类别。
-
在向导中,查看数据源结构。您应该可以看到彼此连接两个表: 主表和辅助表。若要查看的各个字段的表中,选择显示表中的列复选框。完成检查数据结构后,单击下一步。
-
清除应用商店中的数据的表单模板的副本复选框,然后单击下一步。
-
在输入此数据连接的名称框中,在向导的下一页上键入数据连接的名称。
-
选择打开窗体时自动检索数据复选框。
-
单击完成,然后单击关闭数据连接对话框中。
连接到数据的第一个列表框
现在,您已创建辅助数据源的数据连接,您可以连接到数据库中的表的第一个表单模板中的列表框。
-
在表单模板中,双击之前插入下拉列表框。
-
单击“数据”选项卡。
-
在下拉列表框属性对话框中,单击在列表框项下的从外部数据源查找值。
-
在数据源框中,确保您创建的数据连接已选中。
-
单击选择 XPath 项框旁边。
-
在选择域或组对话框中,单击包含您希望在下拉列表中 (在本示例中, d: 类别),显示的数据的表的名称,然后单击确定。
注意: 在选择域或组对话框中的黄色背景指明您正在处理辅助数据源。
-
单击选择 XPath 值框旁边。
-
在选择域或组对话框中,确保连接域 (本示例中, : CategoryID) 处于选中状态,然后再单击确定。这是值将被保存在用户列表框中进行选择。
-
单击选择 XPath 旁边显示名称框。
-
在选择域或组对话框中,单击您想要在下拉列表中显示的字段名称 (在此示例中, : 类别名称)。
-
单击“确定”两次。
连接到数据的第二个列表框
现在,您将需要连接到该数据库的第二个列表框。同时使此数据连接,要将筛选器应用于第二个列表框中。此筛选器将填充相应的值,基于第一个列表框中选中的值与第二个列表框。
-
在表单模板中,双击标准列表框。
-
单击“数据”选项卡。
-
在列表框属性对话框中,单击在列表框项下的从外部数据源查找值。
-
在数据源框中,确保您创建的数据连接已选中。
-
单击选择 XPath 项框旁边。
-
在选择域或组对话框中,展开 (在本示例中, d: 类别),主要组,然后单击包含要 (在此级联列表框中显示的数据的表对应的第二组例如,产品)。
-
单击筛选数据。
-
在筛选数据对话框中,单击添加。
-
在指定筛选条件对话框中,在第一个框中,确保连接字段中的辅助表 (在本示例中,产品),已选中。
重要: 如果连接域有两个表中的相同的名称,请确保选择正确的项。在列表中,每个表中的字段排列在一起。因此,您可以使用周围的字段名称以确定它正确。在此示例中,我们选择了其他字段出现的类别 id 字段从产品表。
-
在第三个框中,单击选择域或组。
-
在数据源框中,在选择域或组对话框中,单击主,单击listBox1字段中,,,然后单击确定。
现在,您已配置的筛选器下拉列表框 (listBox1 域) 中使用标准的列表框中的值列表中选择的值进行比较。
-
单击确定三次以返回到列表框属性对话框。
-
单击选择 XPath 值框旁边。
-
在选择域或组对话框中,选择要保存在用户列表框中进行选择的值。在此示例中,我们要保存以供以后使用的产品 Id 字段。因此,我们选择: 产品 Id分组,然后单击确定。
-
单击选择 XPath 旁边显示名称框。
-
在选择域或组对话框中,单击要显示在列表框中的字段名称 (在此示例中, : ProductName)。
-
单击“确定”两次。
测试列表框
既然您已连接到数据库的第二个列表框并应用了筛选器,您准备测试列表框,以确保它们能正常工作。
-
要测试所做的更改,请单击“常用”工具栏上的“预览”,或者按 Ctrl+Shift+B。
-
在下拉列表框中选择一个值。标准列表框应显示相应的值从辅助表中,具体取决于您选择的关系域。
提示: 如果无法正常工作的列表框,请查看第二个列表框,以确保它将类别 Id字段的listBox1字段进行比较的筛选器。