【问题标题】:Infopath and Cascading Dropdowns信息路径和级联下拉菜单
【发布时间】:2013-03-05 20:22:01
【问题描述】:

我有一个问题要问你们聪明的灵魂。我有一个 Sharepoint 列表的 Infopath 表单(这意味着这被认为是一个 Infopath 列表表单),我希望它具有某些行为......但我不太确定如何实现它。

要点是,我在表单上有两个下拉菜单,我希望第二个下拉菜单根据第一个下拉菜单选择更改其值。

两者都指向同一个列表。列表如下所示:

ID, ModuleName, SystemName, PayCode, LineOfBusoness
1, Mod1, Sys1, O, LOB1 
2, Mod2, Sys2, O, LOB2
3, Mod3, Sys3, C, LOB3
4, Mod3, Sys4, O, LOB3

第一个下拉菜单只包含支付代码,所以基本上是“O”和“C”。

现在第二个下拉菜单变得棘手了。

第二个下拉菜单是根据在上一个下拉菜单中选择的 PayCode 显示该列表中的所有业务线 (LOB)。如果他们选择“O”,则只显示所有支付代码为“O”的 LOB。

但是...如果他们选择“C”...那么表单上还有下拉菜单,他们已经选择了系统和模块...因此它将采用那些被选择的值并选择值在包含他们选择的系统、他们选择的模块和他们选择的支付码的列表中。

我该怎么做?我的第一个想法很好,只使用代码......但事实证明 Infopath 不允许在“列表表单”上使用自定义代码,这是...... wtf?因此,下一个选项是使用“级联下拉”方法,您也可以使用规则和过滤器来尝试实现此行为。

可以吗?您对如何解决这个问题有什么想法?

提前致谢,如果您需要更多信息,请告诉我!

【问题讨论】:

    标签: sharepoint infopath infopath2010 cascadingdropdown


    【解决方案1】:

    一种方法是在后面的代码中。

    取第一个下拉菜单,找到与之关联的字段,右键单击并创建一个“已更改”事件。

    在事件背后的代码中,将为该字段创建一个 Changed 事件。在那里,您可以获取第一个下拉列表中当前选定项目的值。根据该值,您可以修改第二个下拉菜单的内容。

    通过获取原始列表并运行 SPQuery 来选择具有“O”或“C”或任何选定值的所有项目来执行此操作。您还可以对列表的所有项目运行 linq 或 foreach 语句,无论您喜欢哪个:)

    注意:确保下拉列表控件属性在属性的“浏览器表单”选项卡中选择了“始终”(右键单击下拉列表以访问这些属性)

    希望这会有所帮助!

    【讨论】:

    • 谢谢迈耶。那是我的初衷,而且会很容易做到!但是,这是一个 Sharepoint 列表表单,而不是表单库表单。列表表单不允许自定义代码(代码隐藏),这对我来说是个麻烦事。有关表单类型之间的差异,请参见以下内容:blogs.msdn.com/b/infopath/archive/2010/04/22/…
    猜你喜欢
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2013-09-14
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多