Infopath和级联下拉列表

时间:2013-03-05 20:22:02

标签: sharepoint infopath infopath2010 cascadingdropdown

我有一个明智的灵魂问题。我有一个用于Sharepoint列表的Infopath表单(这意味着这被认为是一个Infopath List表单)我想要某些行为...而且我不太确定如何实现它。

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

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

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?那么接下来的选择是使用“级联下拉”方法,您也可以使用规则和过滤器来尝试实现此行为。

能做到吗?您对如何解决这个问题有何看法?

提前致谢,如果您需要更多信息,请与我们联系!

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是在后面的代码中。

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

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

通过抓取原始列表并运行SPQuery来选择所有具有“O”或“C”或任何选定值的项目来执行此操作。你也可以在所有列表的项目上运行linq或foreach语句,无论你喜欢什么:)

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

希望这有帮助!