Sharepoint 2013/2016计算列停止计算

时间:2017-05-03 12:33:03

标签: sharepoint sharepoint-2013 sharepoint-2016

我在SharePoint内部部署中有一个计算列,显示截止到期日的天数,这个天完美地工作一天左右然后停止计算,但是如果我转到列表设置并单击列并单击确定然后再计算一下?

有没有人遇到类似的问题。我在2013年都遇到过这个问题,但在几周后又搬到了2016年,仍然是同一个问题。

我已经尝试过" "空白,也是""空的所以不确定是否导致问题?

公式有问题吗?

这是公式:

 =IF(ISBLANK([Due Date])," ",
IF(ISERROR(DATEDIF(NOW(),[Due Date],"d"))," ",DATEDIF(NOW(),[Due Date],"d")))

1 个答案:

答案 0 :(得分:2)

Calculated columns cannot contain volatile functions,其中包括依赖当前日期的那些。

  

SharePoint列中的值(即使在计算列中)也存储在SharePoint的基础SQL Server数据库中。

     

计算列中的计算不会在页面加载时执行;相反,它们仅在时重新计算项目(在这种情况下,仅针对该特定项目重新计算公式),或者每当更改列公式时(其中)如果所有项目都重新计算公式。)

如果您需要显示随时间变化而变化的动态值,您可以选择其他几种方法。

客户端渲染

考虑使用客户端呈现,它允许您使用JavaScript动态确定列表视图中的记录的显示方式。此JavaScript在页面加载时运行,因此它可以比计算列更好地处理当前与时间相关的值。

要使用客户端呈现,您需要创建一个控制视图显示方式的JavaScript文件。您将该文件上载到SharePoint上的某个位置,其中人们将至少具有读取权限,然后编辑要以不同方式显示的列表视图Web部件并设置其" JSLink"属性指向您的JavaScript文件。

查看 this answer ,了解使用JSLink文件欺骗动态日期字段的示例。

Microsoft还提供了一些文档here,但我认为他们做的工作比必要的多(在Visual Studio中为他们的示例创建一个完整的新列表定义项目,而不是仅为现有列表创建JSLink JavaScript文件)

其他选项

上面链接的旧问题中提到了一些其他选项:

  
      
  1. 条件格式:您可以应用条件格式以突出显示符合特定条件的记录。这可以使用SharePoint Designer或HTML / JavaScript来完成。

  2.   
  3. 过滤列表视图:由于列表视图是实时查询和生成的,因此您可以在列表视图过滤器中使用易失性值。您可以设置列表视图Web部件,仅显示Created等于[Today]的项目。由于您可以在一个页面上放置多个列表视图Web部件,因此您可以为今天的项目创建一个部分,为所有其他项目创建另一个Web部件,从而实现视觉分离。

  4.   
  5. 工作流,计时器作业或计划任务:您可以使用重复过程每天设置正常(非计算)列的值。您需要小心这种方法以确保良好的性能;例如,如果列表超出列表视图阈值,您将不希望它查询和更新列表中的每个项目。

  6.   

要展开“筛选列表视图”选项,您可以拥有一个仅显示在特定天数内到期的项目的视图。例如,您可以通过过滤Due Date字段小于[Today]+7Due Date大于或等于[Today]的位置,在7天内显示所有到期的项目。您还可以对视图进行排序,以显示具有较早到期日期的项目。