| 适用于 |
| Microsoft Office InfoPath™ 2003 Service Pack 1 |
| Microsoft Office InfoPath 2003 |
级联列表框是一种带选择的列表框,这些选择随用户在其他列表框中选中值的变化而变化。例如,在下面显示的“类别”框中单击“调味品”将会在“产品”框中显示调味品列表。
级联列表框可帮助用户简化数据输入过程,确保用户正确地输入数据。本文讲述如何创建三个不同的级联列表框:第一个列表框使用表单中的值进行填充,第二个列表框使用外部可扩展标记语言 (XML) (可扩展标记语言 (XML):标准标记语言 (SGML) 的一种浓缩形式,开发人员可用其创建自定义标签,为整理和提供信息提供了灵活性。) 文档中的值进行填充,第三个列表框使用 Microsoft Office Access 数据库中的值进行填充。
在每一示例中,您都需要设计一个包含两个列表框的表单,第二个列表框包含一个以第一个列表框为基础的筛选器。当第一个列表框中的值发生更改时,将自动对第二个列表框应用筛选器,从而更改其中的值。
注释 当您在自己的表单中创建级联列表框时,请确保两个列表框不要位于重复节 (重复节:表单上的一个控件,该控件包含其他控件且在需要时可以重复。用户在填写表单时可以插入多个节。)或重复表 (重复表:表单上的一个控件,该控件包含表格式的其他控件且在需要时可以重复。用户在填写表单时可以插入多个行。)中。
插入列表框
要创建级联列表框,您需要在表单中插入两个列表框。
- 在“文件”菜单上,单击“设计表单”。
- 在“设计表单”任务窗格中,单击“新建空白表单”。
- 在“设计任务”任务窗格中,单击“控件”。
- 在“控件”任务窗格的“插入控件”下,单击“下拉列表框”。用户在填写表单时,在此下拉列表框中选择的内容将决定第二个列表框中可用的选项。
- 单击“列表框”。现在您的表单应包含一个下拉列表框和一个标准列表框,如下所示:
插入列表框后,InfoPath 将自动在表单的数据源 (数据源:为 InfoPath 表单定义和存储数据的字段和组的集合。表单中的控件绑定到数据源中的字段和组。)(列表框将绑定 (绑定:将控件连接到数据源中的字段或组,以便可以保存输入控件的数据。未绑定控件时,表明它未连接到字段或组,输入控件中的数据不会被保存。)到该数据源)中创建域。让我们重命名这些域,以便在以后可以方便地进行处理。
- 在表单中,双击下拉列表框。
- 在“下拉列表框属性”对话框的“数据”选项卡上,在“域名称”框中键入 listBox1,再单击“确定”。
- 在表单中,双击标准列表框,然后在“列表框属性”对话框的“数据”选项卡上,在“域名称”框中键入 listBox2Cascade。
提供数据
既然已经插入了列表框,您需要为它们提供显示数据。然后应用筛选器以便根据第一个列表框中的选项来选择第二个列表框中的内容。
本节将介绍如何通过以下三种常用方法将列表框与数据进行连接:在表单中添加数据,将表单连接到包含数据的现有 XML 文档,将表单连接到包含数据的数据库。要完成级联列表框的创建过程,请从以下列表中单击要使用的方法。
连接到表单中的数据
在本节中,您将学习如何创建用表单中的数据填充的列表框。要使用表单中的数据填充列表框,您需要在表单中设置域以便输入类别名称,并为每一类别输入一组产品。
- 在“视图”菜单上,单击“数据源”。
- 在“数据源”任务窗格中,右键单击“myFields”组,然后在快捷菜单上单击“添加”。
- 在“添加域或组”对话框的“名称”框中,键入“类别和产品”。
- 在“类型”框中,单击“组”。
- 选择“重复”复选框,再单击“确定”。
- 在“数据源”任务窗格中,右键单击“类别和产品”组,然后在快捷菜单上单击“添加”。
- 在“添加域或组”对话框的“名称”框中,键入“类别”。再单击“确定”。此域将包含第一个列表框中的类别名称。
- 右键单击“类别和产品”组,然后在快捷菜单上单击“添加”。
- 在“添加域或组”对话框的“名称”框中,键入“产品”。
- 选择“重复”复选框,再单击“确定”。此域将包含第二个列表框中的产品名称。
由于该列表框使用表单中的数据填充,因此需要直接在表单中添加数据。要在表单中添加数据,您将需要为“产品”和“类别”域创建默认值。
提示
您还可以创建显示用户自己在表单中键入的值的列表框。要在列表框中显示用户自己输入的值,您需要将列表框与绑定到表单中的控件的域相关联。当用户向控件中输入值时,列表框中的选项也将发生更改。
- 在“工具”菜单上,单击“默认值”。
- 在“编辑默认值”对话框中,展开“类别和产品”组,选择“类别”域(不要清除复选框),然后在“默认值”框中,键入“海鲜”。
- 选择“产品”域(不要清除复选框),然后在“默认值”框中,键入“蟹肉”。
- 右键单击“产品”域,然后在快捷菜单上单击“在上面添加另一个产品”。此操作允许您添加第二种海鲜产品作为默认值。
- 将第二个“产品”域的默认值设置为“鲑鱼”。
- 右键单击“类别和产品”组,然后在快捷菜单上单击“在下面添加另一个类别和产品”。该操作允许您添加第二种类别作为默认值。
- 使用上述步骤将第二组“类别”和“产品”域的默认值设置为“乳制品”、“切达干酪”和“巧克力奶”。
您已经为“产品”和“类别”域输入了默认值,现在可以将第一个列表框与刚刚输入的数据进行连接。
- 在表单中,双击下拉列表框。
- 在“下拉列表框属性”对话框的“数据”选项卡上,单击“列表框项”下面的“在表单数据源中查找值”。
- 单击“项”框后面的“选择 XPath”
。
- 在“选择域或组”对话框中,展开“类别和产品”组,再单击“类别”域。
现在您需要将第二个列表框与数据进行连接。在进行此项数据连接时,您需要对第二个列表框应用筛选器。此筛选器将根据第一个列表框中选择的类别使用相应的产品来填充第二个列表框。筛选器会将在第一个列表框(“listBox1”域)中选择的值与表单中保存的类别列表(“类别”域)进行比较。
- 在表单中,双击标准列表框。
- 在“列表框属性”对话框的“数据”选项卡上,单击“列表框项”下面的“在表单数据源中查找值”。
- 单击“项”框后面的“选择 XPath”
。
- 在“选择域或组”对话框中,展开“类别和产品”组,单击“产品”域,再单击“筛选数据”。
- 在“筛选数据”对话框中,单击“添加”。
- 在“指定筛选条件”对话框中,在“显示符合下列条件的数据”下的第一个框中,单击“选择域或组”。
- 在“选择域或组”对话框中,单击“listBox1”,再单击“确定”。
- 在“指定筛选条件”对话框中,在“显示符合下列条件的数据”下的第三个框中,单击“选择域或组”。
- 在“选择域或组”对话框中,单击“类别”域。
您已经将第二个列表框连接到数据并应用了筛选器,现在您可以测试列表框以确保它们能够正常运行。
- 在“常用”工具栏上,单击“预览表单”。
- 在下拉列表框中,单击“海鲜”。此时,标准列表框应显示一个空白行以及“蟹肉”和“鲑鱼”。
注释 空白行允许用户清除他们在列表框中所做的选择。
如果列表框无法正常运行,请检查第二个列表框的筛选器,确保其对“listBox1”域和“类别”域进行比较。
连接到外部 XML 文档
在本节中,您将学习如何创建与 XML 文档的数据连接,该文档包含产品和类别值。XML 文档将作为您的辅助数据源。要创建此类型的数据连接,您需要创建 XML 文档,并将表单中的列表框与 XML 文档相关联,然后对第二个列表框应用筛选器以便能够相应地更改产品列表。
在将表单与辅助数据源关联之前,您需要创建 XML 文档。
- 请打开 Microsoft 记事本或其他文本编辑器。
- 将下列 XML 数据复制并粘贴到文本编辑器中:
<?xml version="1.0" encoding="UTF-8"?>
<列表框数据>
<类别和产品>
<类别>海鲜</类别>
<产品>
<产品>蟹肉</产品>
</产品>
<产品>
<产品>鲑鱼</产品>
</产品>
</类别和产品>
<类别和产品>
<类别>乳制品</类别>
<产品>
<产品>巧克力奶</产品>
</产品>
<产品>
<产品>切达干酪</产品>
</产品>
</类别和产品>
</列表框数据>
- 在计算机上将文件保存为 listBoxData.xml
您已经创建了一个 XML 文档,现在可以将其连接到您的表单。这将生成辅助数据源。
- 在“工具”菜单上,单击“数据连接”。
- 在“数据连接”对话框中,单击“添加”。
- 在“数据连接向导”中,单击“仅接收数据”,再单击“下一步”。
- 在下一向导页面上,单击“XML 文档”,再单击“下一步”。
- 在下一向导页面上,单击“浏览”,选择您在计算机上保存的 listBoxData.xml 文件,再单击“下一步”。
- 在下一向导页面的“输入该数据连接的名称”框中,键入 listBoxDataXMLFile。
- 选择“在打开表单时自动检索数据”复选框。这样可以确保在每次打开表单时都能够使用列表框数据,无需用户查询该数据。
- 单击“完成”。
- 当显示对话框询问是否将此文件添加到表单以便可以从其他计算机访问该文件时,单击“是”。
现在您可以将表单中的第一个列表框与 XML 文档中的数据进行连接。
- 在表单中,双击下拉列表框。
- 在“下拉列表框属性”对话框的“数据”选项卡上,单击“列表框项”下面的“在指向数据库、Web 服务、文件或者 SharePoint 库或列表的数据连接中查找值”。
- 在“数据连接”对话框中,单击“listBoxDataXMLFile”。
- 单击“项”框后面的“选择 XPath”
。
- 在“选择域或组”对话框中,展开“类别和产品”组,再单击“类别”域。
注释 “选择域或组”对话框中的黄色背景表示您正在使用辅助数据源。
现在您需要将第二个列表框与 XML 文档进行连接。在进行此项数据连接时,您需要对第二个列表框应用筛选器。此筛选器将根据第一个列表框中选择的类别使用相应的产品来填充第二个列表框。筛选器会将在第一个列表框(“listBox1”域)中选择的值与表单中保存的类别列表(“类别”域)进行比较。
- 在表单中,双击所添加的第二个列表框。
- 在“列表框属性”对话框的“数据”选项卡上,单击“列表框项”下面的“在指向数据库、Web 服务、文件或者 SharePoint 库或列表的数据连接中查找值”。
- 在“数据连接”对话框中,单击“listBoxDataXMLFile”。
- 单击“项”框后面的“选择 XPath”
。
- 在“选择域或组”对话框中,展开“类别和产品”组,展开“产品”组,再单击“产品”域。
- 单击“筛选数据”。
- 在“筛选数据”对话框中,单击“添加”。
- 在“指定筛选条件”对话框中,在“显示符合下列条件的数据”下的第一个框中,单击“选择域或组”。
- 在“选择域或组”对话框的“数据源”框中,单击“主”。
- 单击“listBox1”,再单击“确定”。
- 在“指定筛选条件”对话框中,在“显示符合下列条件的数据”下的第三个框中,单击“选择域或组”。
- 在“选择域或组”对话框的“数据源”框中,单击“listBoxDataXMLFile (辅助)”,再单击“类别”域。
您已经将第二个列表框连接到 XML 文档并应用了筛选器,现在您可以测试列表框以确保它们能够正常运行。
- 在“常用”工具栏上,单击“预览表单”。
- 在下拉列表框中,单击“海鲜”。此时,标准列表框应只显示一个空白行以及“蟹肉”和“鲑鱼”。
注释 空白行允许用户清除他们在列表框中所做的选择。
如果列表框无法正常运行,请检查第二个列表框的筛选器,确保其对“listBox1”域和“类别”域进行比较。
连接到数据库
为了将列表框连接到数据库,您需要在计算机上安装 Microsoft Office Access 2003 和 Access 罗斯文示例数据库(默认位置为 C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\)。
提示
如果找不到罗斯文示例数据库,您可能需要安装该数据库。若要安装该数据库,请打开 Access,在“帮助”菜单上单击“示例数据库”,再单击“罗斯文示例数据库”。
在本节中,您将学习如何创建与 Access 数据库中两个表的数据连接。在本示例中,您将使用罗斯文示例数据库。要创建此类型的数据连接,您需要将表单中的列表框与罗斯文示例数据库相关联,然后对第二个列表框应用筛选器,以便第二个列表框中显示的产品列表能够根据第一个列表框中选择的类别发生相应的更改。
首先,您需要在表单和数据库中的表之间创建数据连接。由于只是从数据库中显示数据,而不是直接修改数据,因此 Access 数据库是表单的辅助数据源。
- 在“工具”菜单上,单击“数据连接”。
- 在“数据连接”对话框中,单击“添加”。
- 在“数据连接向导”中,单击“仅接收数据”,再单击“下一步”。
- 在下一向导页面上,单击“数据库(仅 Microsoft SQL Server 或 Microsoft Office Access)”,再单击“下一步”。
- 在下一向导页面上,单击“选择数据库”,然后导航到硬盘驱动器上的“Northwind”示例数据库并双击该数据库。
注释 默认情况下,罗斯文示例数据库位于 C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\ 中。
- 在“选择表格”对话框中,单击“类别”表,再单击“确定”。这将把“类别”表指定为数据连接的主表。
- 在向导中,单击“添加表”。
- 在“添加表或查询”对话框中,单击“产品”,再单击“下一步”。
- 在“编辑关系”对话框中,确保连接域都是“类别ID”,再单击“完成”。
注释 类别表与产品表是一对多的关系,这意味着对于每一类别都对应着多个产品。在数据库中,这种关系类型通常是使用键字域来建立的。在本示例中,“类别ID”键字域允许 Access 将正确的产品集与相应的类别相关联。
- 在向导中,检查数据源结构。您会看到两个表彼此连接在一起:主表(类别)和副表(产品)。要查看表中的单个域,您可以选择“显示表列”复选框。检查完表结构之后,单击“下一步”。
- 在下一向导页面的“输入该数据连接的名称”框中,键入 listBoxDataDatabase。
- 选择“在打开表单时自动检索数据”复选框。
您已经创建了与辅助数据源的数据连接,现在您可以将表单中的第一个列表框与数据库中的表进行连接。
- 在表单中,双击下拉列表框。
- 在“下拉列表框属性”对话框的“数据”选项卡上,单击“列表框项”下面的“在指向数据库、Web 服务、文件或者 SharePoint 库"或“列表框项”中查找值。
- 在“数据连接”框中,确保选择“listBoxDataDatabase”。
- 单击“项”框后面的“选择 XPath”
。
- 在“选择域或组”对话框中,单击“d:类别”组,再单击“确定”。
注释 “选择域或组”对话框中的黄色背景表示您正在使用辅助数据源。
- 单击“值”框后面的“选择 XPath”
。
- 在“选择域或组”对话框中,确保选择“:类别ID”组,再单击“确定”。该值就是用户在列表框中进行选择时要保存的值。
- 单击“显示名称”框后面的“选择 XPath”
。
- 在“选择域或组”对话框中,单击“:类别名称”组,再单击“确定”。该值就是将在列表框中向用户显示的值。
现在您需要将第二个列表框与数据库进行连接。在进行此项数据连接时,您需要对第二个列表框应用筛选器。此筛选器将根据第一个列表框中选择的类别使用相应的产品来填充第二个列表框。筛选器会将在第一个列表框(“listBox1”域)中选择的值与表单中保存的类别列表(“:类别ID”域)进行比较。
- 在表单中,双击标准列表框。
- 在“列表框属性”对话框的“数据”选项卡上,单击“列表框项”下面的“在指向数据库、Web 服务、文件或者 SharePoint 库或列表的数据连接中查找值”。
- 在“数据连接”框中,确保选择“listBoxDataDatabase”。
- 单击“项”框后面的“选择 XPath”
。
- 在“选择域或组”对话框中,展开“d:类别”,再单击“产品”组。
- 单击“筛选数据”。
- 在“筛选数据”对话框中,单击“添加”。
- 在“指定筛选条件”对话框中,确保在“显示符合下列条件的数据”下的第一个框中选择“类别ID”。
- 在“显示符合下列条件的数据”下的第三个框中,单击“选择域或组”。
- 在“选择域或组”对话框的“数据源”框中,单击“主”,单击“listBox1”域,再单击“确定”。现在您已经设置了筛选器,该筛选器可以将在下拉列表框(“listBox1”域)中选择的值与数据库中的产品列表(“类别ID”域)进行比较。
- 单击“确定”三次,返回到“列表框属性”对话框。
- 单击“值”框后面的“选择 XPath”
。
- 在“选择域或组”对话框中,确保选择“:产品ID”组,再单击“确定”。该值就是用户在列表框中进行选择时要保存的值。
- 单击“显示名称”框后面的“选择 XPath”
。
- 在“选择域或组”对话框中,单击“:产品名称”组,再单击“确定”。该值就是将在列表框中向用户显示的值。
您已经将第二个列表框连接到数据库并应用了筛选器,现在您可以测试列表框以确保它们能够正常运行。
- 在“常用”工具栏上,单击“预览表单”。
- 在下拉列表框中,单击“特制品”。标准列表框将显示以下值:“海鲜粉”、“沙茶”、“烤肉酱”、“猪肉干”和“鸡精”。
如果列表框无法正常运行,请检查第二个列表框的筛选器,确保其对“listBox1”域和“类别ID”域进行比较。