我在自定义 SharePoint 2007 列表中有一个计算列,其公式如下:
=CONCATENATE("IR-",[ID],"-",LEFT(UPPER([Title]),25))
如果在列表中创建了一个项目,那么一切都很好,但是,当更新一个项目时,[ID] 列不再位于该项目的计算列中。
因此,在创建时:“IR-40-TheTitleIsHere”,但经过编辑后,它是“IR--TheTitleIsHere”。
任何人都对为什么会发生这种情况有所了解?
我在自定义 SharePoint 2007 列表中有一个计算列,其公式如下:
=CONCATENATE("IR-",[ID],"-",LEFT(UPPER([Title]),25))
如果在列表中创建了一个项目,那么一切都很好,但是,当更新一个项目时,[ID] 列不再位于该项目的计算列中。
因此,在创建时:“IR-40-TheTitleIsHere”,但经过编辑后,它是“IR--TheTitleIsHere”。
任何人都对为什么会发生这种情况有所了解?
我确认上述行为。任何添加/编辑都会清除 [ID] 部分。如果您编辑列表中的列并更新公式,它将更新所有列表项以使其正确(直到您对项目进行编辑)。
我发现这篇文章提到了同样的问题。
听起来唯一的解决方案是使用 SharePoint Designer 创建一个简单的工作流,以更新列表中的文本字段。
不久前我有一个类似的问题。通过其他博客和专家,我发现 [ID] 列不应该在计算列中使用,因为它会造成严重破坏并导致许多错误。抱歉 - 删除 ID 列,你应该没问题。
这个问题有点老了,但我遇到了同样的问题并找到了解决方案。这是一个非常具体的修复程序,不会对每个人都有帮助 - 它涉及在内容编辑器 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都会启动并更新所有的 URL 以具有正确的 ID。
我知道这已经很老了,但我在其他任何地方都找不到更新版本的问题,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/ pathtosharepoint 代码:http ://pathtosharepoint.com/Downloads