【问题标题】:SharePoint: Calculated Column Values Disappear When Editing List Item. Any ideas?SharePoint:编辑列表项时计算的列值消失。有任何想法吗?
【发布时间】:2009-07-07 20:20:00
【问题描述】:

我在自定义 SharePoint 2007 列表中有一个计算列,其公式如下:

=CONCATENATE("IR-",[ID],"-",LEFT(UPPER([Title]),25))

如果在列表中创建了一个项目,一切都很好,但是,当更新一个项目时,[ID] 列不再在该项目的计算列中。

所以,在创建时:“IR-40-TheTitleIsHere”,但经过编辑后,它是“IR--TheTitleIsHere”。

有人知道为什么会发生这种情况吗?

【问题讨论】:

  • 你确定编辑会破坏这个吗?因为很多文章说在添加操作期间ID将不可用,因为那时还没有生成它。因此,要根据 ID 获取计算列中的值,您需要编辑项目以便反映该值。
  • 是的,既然你提到它,我认为你是对的。似乎当我进入计算列(我什至不必编辑任何内容),然后单击“确定”时,所有的 ID 都会生成/计算,因为所有内容都丢失了。但是,在此之后编辑记录会使该记录的 [ID] 值再次消失。 sigh 关于如何在计算中包含 ID 部分并让它跨越记录编辑的任何想法?

标签: sharepoint calculated-columns


【解决方案1】:

我确认上述行为。任何添加/编辑都会清除 [ID] 部分。如果您编辑列表中的列并更新公式,它将更新所有列表项以使其正确(直到您对项目进行编辑)。

我找到了this post that mentions the same problem。

听起来唯一的解决方案是使用 SharePoint Designer 创建一个简单的工作流,以更新列表中的文本字段。

【讨论】:

  • 是的,SharePoint 工作流听起来是唯一的解决方案。谢谢。
【解决方案2】:

不久前我遇到了类似的问题。通过其他博客和专家,我发现 [ID] 列不应该在计算列中使用,因为它会造成严重破坏并导致许多错误。抱歉 - 删除 ID 列,你应该没问题。

【讨论】:

    【解决方案3】:

    这个问题有点老了,但我遇到了同样的问题并找到了解决方案。这是一个非常具体的修复程序,不会对每个人都有帮助 - 它涉及在内容编辑器 Web 部件中使用 javascript 来更新计算字段。

    这个站点——http://blog.pathtosharepoint.com/2008/09/01/using-calculated-columns-to-write-html/——给出了一个例子,说明如何以与我使用它的方式相同的方式使用 javascript。重要的代码块是第一个 while 循环。关键是从列表中获取开箱即用的 ID 列并更新任何需要 ID 的计算字段。

    在我的情况下,我在计算字段中有一个 URL,需要将 ID 作为参数。当然这不会正常工作,因为您不能将 ID 放在计算字段中。我所做的是将“?ID = null”放在计算字段url的ID参数中,然后用使用javascript检索的ID替换它。所以每当加载页面时,js都会启动并更新所有具有正确 ID 的 URL。

    【讨论】:

    • SharePoint 2010 上是否有任何解决方案?我尝试了 SharePoint 2010 的 JavaScript 代码,但没有成功。
    【解决方案4】:

    我知道这已经很老了,但我在其他任何地方都找不到更新版本的问题,ferr 上面的答案为我解决了这个问题,但不是很清楚,所以我想我会更新它。

    这假设您想在输出 HTML 中使用 ID(例如在链接中),我认为这很常见。

    使用我在下面添加的 pathtosharepoint 链接中的 javascript 来获取带有 if 语句的 ID,以确保安全:

    if (HTMLregexp.test(CellContent)) {    //original pathtosharepoint line
       if (NodeSet[i].parentNode.getAttribute("iid")){
          var SPID = NodeSet[i].parentNode.getAttribute("iid").split(",")[1];
          CellContent = CellContent.replace("SPIDReplace", SPID)
       }
    NodeSet[i].innerHTML = CellContent;   //original pathtosharepoint line
    

    在撰写本文时,这已放入最新 pathtosharepoint 修复的 while 循环中。这适用于我在 SharePoint 2010 上。 注意:在计算列中包含字符串“SPIDReplace”以将其替换为项目 ID。

    pathtosharepoint 页面:http://blog.pathtosharepoint.com/category/calculated-columns/ 路径共享点代码:http://pathtosharepoint.com/Downloads

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2020-11-15
    相关资源
    最近更新 更多