如何根据选择的两个下拉列表有条件地要求18个以上的字段

时间:2017-03-28 19:34:28

标签: validation sharepoint-2010

我是Sharepoint 2010的新手,我称之为高中新生级别的编码经验,尽管我通常会绊倒并修补我的方式。我目前无法访问Sharepoint设计师,但是从我到目前为止所做的搜索来看,它可能是必需的。我仍然希望找到解决以下问题的OOTB解决方案。

我的任务是在Sharepoint上构建事件解决方案跟踪表。我的老板非常关心受到法律审计,并对所需信息有一些非常具体的要求。 A列包含5个选项的下拉列表,表明最终解决方案。 B列包含一个下拉列表,其中有4个选项表示初始问题。根据A和B中的选择,C-X中的不同列必须为空白,不是空白或包含特定条目。我能找到的唯一方法是创建一个列表验证,其中包含嵌套的if,对于A和B的每个组合,产生20个嵌套ifs。但是,sharepoint仅限于7个嵌套ifs,所以我正在寻找任何可能的解决方案。

*此列表主要在数据表视图中访问,因此"计算列中的HTML"类型解决方案不可行。

1 个答案:

答案 0 :(得分:1)

您可以使用计算列将验证公式分解为更易于管理的块。

让我们从一个简单的例子开始。

  

条件1:如果最初的问题是用户的计算机太慢并且最终解决方案是重新启动计算机,则需要填写[C]列。

     

条件2:如果最初的问题是用户着火并且最终解决方案是用水淹没他们,则需要填写[D]列。

您可以在一个公式中执行该列表验证,如下所示:

=IF(
    AND([A]="Restarted Computer",[B]="Computer is slow"),
    NOT(ISBLANK([C])),
    IF(
        AND([A]="Doused with water",[B]="User is on fire"),
        NOT(ISBLANK([D]),
        TRUE
    )
 )

但这很长很难看(特别是当你把它浓缩成一行时)。

相反,您可以添加两个计算列,每个列对应要检查的每个条件。为了这个例子,我们假设您添加了一个名为C_is_valid的列和一个名为D_is_valid的列:

C_is_valid 计算列公式:

=IF(AND([A]="Restarted Computer",[B]="Computer is slow"),NOT(ISBLANK([C])),TRUE)

D_is_valid 计算列公式:

IF(AND([A]="Doused with water",[B]="User is on fire"),NOT(ISBLANK([D]),TRUE)

更新了验证公式:

=AND([C_is_valid],[D_is_valid])

很容易看出这可以简化一组非常复杂的验证条件......

=AND(C_is_valid,AND(D_is_valid,AND(E_is_valid,AND(F_is_valid,AND(G_is_valid,AND(H_is_valid,I_is_valid)))))

但即便如此,也可以通过将其中一些AND()合并到多个计算列中来简化,这样您的最终验证公式就可以简单:

=AND([First set of conditions is valid],[Second set of conditions is valid])