0

我有一个问题要问你们聪明的灵魂。我有一个用于 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?因此,下一个选项是使用“级联下拉”方法,您也可以使用规则和过滤器来尝试实现此行为。

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

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

4

1 回答 1

0

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

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

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

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

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

希望这可以帮助!

于 2013-03-05T23:51:42.130 回答