【问题标题】:Cascading Dropdown List in InfoPath 2010 with SQL Server 2008InfoPath 2010 与 SQL Server 2008 中的级联下拉列表
【发布时间】:2011-08-08 20:16:36
【问题描述】:

我开始处理我的第一个 InfoPath 表单。我有一个三个下拉列表(Global FunctionMajor TaskSubtask),它们需要查询 SQL 数据库并根据之前下拉列表中的选定值过滤它们的数据。

到目前为止我做了什么

  1. 我已经添加了数据连接(对于每个表和相应的下拉列表),它只是在数据库中查询表中的所有记录。对于离线模式,每个连接都设置为“在表单模板中存储数据的副本”。

    然后在下拉列表框属性中,我将列表框选择设置为“从外部数据源获取选择”并设置Entries 字段为适当的表格/下拉列表组合选择列。

    但是,当我向数据添加过滤器并尝试预览表单时,“级联”下拉列表中的数据永远不会改变。它仍然有所有的记录。

  2. 然后我尝试为其中一个级联下拉菜单添加新规则。例如,我为Major Task 下拉菜单创建了一个新规则,并将其设置如下:

    • 条件为Global Function is not blank
    • 规则类型Action
    • 运行这些操作:
    • 使用数据连接查询:主要任务(仅获取所有记录)

    我在规则/操作中没有看到过滤数据的任何地方。

  3. 编辑我刚刚尝试了一个新的数据连接,它包含正确设置关系的所有三个表(GlobalFunctionsMajorTasksSubtasks)(即 GlobalFunctions.Id = MajorTasks.GlobalFunction)。然后我将下拉列表的数据源设置为这个新连接。但是,这也根本不过滤数据。它们的条目和值如下:

    • 全局函数:
      • 条目:/dfs:myFields/dfs:dataFields/d_1:GlobalFunctions
      • 过滤器:<None>
      • 值:@Id
      • 显示名称:@Summary
    • 主要任务:
      • 条目:/dfs:myFields/dfs:dataFields/d_1:GlobalFunctions/d_1:MajorTasks
      • 过滤器:GlobalFunction = Id
      • 值:@Id
      • 显示名称:@Summary
    • 子任务:
      • 参赛作品:/dfs:myFields/dfs:dataFields/d_1:GlobalFunctions/d_1:MajorTasks/d_1:SubTasks
      • 过滤器:MajorTask = Id
      • 值:@Id
      • 显示名称:@Summary

限制

  • 我不能有任何代码(因为它不能在浏览器中运行,对吧?)
  • 表格必须能够在 Web 或本地计算机上填写(工作站上保存的副本)
  • 在没有连接到 SQL 数据库时应该仍然可以工作

问题

如何在 InfoPath 2010 中实现多个级联下拉列表,并通过数据连接到可以在浏览器中工作的 MS SQL 数据库并使用 InfoPath Filler(后者可能没有与数据库的连接)。

SQL 表

表格如下所示:

CREATE TABLE GlobalFunctions (
    Id SMALLINT NOT NULL IDENTITY(1,1),
    Summary varchar(MAX) NOT NULL UNIQUE,
    PRIMARY KEY (Id)
);

CREATE TABLE MajorTasks (
    Id SMALLINT NOT NULL IDENTITY(1,1),
    Summary varchar(MAX) NOT NULL UNIQUE,
    GlobalFunction SMALLINT NOT NULL,
    PRIMARY KEY (Id),
    FOREIGN KEY (GlobalFunction) REFERENCES GlobalFunctions(Id)
);

CREATE TABLE SubTasks (
    Id SMALLINT NOT NULL IDENTITY(1,1),
    Summary varchar(MAX) NOT NULL UNIQUE,
    MajorTask SMALLINT NOT NULL,
    PRIMARY KEY (Id),
    FOREIGN KEY (MajorTask) REFERENCES SubTasks(Id)
);

【问题讨论】:

    标签: sql-server-2008 drop-down-menu infopath cascadingdropdown infopath2010


    【解决方案1】:

    好的,我在this article 中找到了我的解决方案。

    基本上我的问题是在当前下拉列表中过滤时,我没有在上一个下拉列表中选择正确的值(实际选择的值)。相反,我是根据数据库数据选择选项的值。

    这些是我解决问题所采取的步骤(转载自文章以防万一):

    1. 右键单击第一个下拉列表并单击“下拉列表属性”并适当设置其数据源。
    2. 右键单击下一个要级联的下拉列表,然后单击“下拉列表属性”。
    3. 适当设置数据源。
    4. 仍然在第二个下拉列表中,单击“条目”框旁边的“选择 XPath”按钮。
    5. 点击“过滤数据”,然后添加。
    6. 在第一个下拉框中,选择“选择一个字段或组...”。
    7. 在“数据源”下拉列表中,选择“Main”。
    8. 选择“全局函数”字段,下拉系列中的第一个(可能在“myFields”下,然后是“dataFields”下)。
    9. 在中间的下拉列表中设置相等运算符。
    10. 在最后一个下拉菜单中,选择“选择一个字段或组...”。
    11. 不更改数据源,在MajorTasks 下选择:GlobalFunction(与全局函数表的FK 关系)。
    12. 确定所有对话框,然后重复子任务下拉列表(系列中的最后一个)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      相关资源
      最近更新 更多