我在自定义SharePoint 2007列表中有一个计算列,其中包含以下公式:
=CONCATENATE("IR-",[ID],"-",LEFT(UPPER([Title]),25))
如果在列表中创建了一个项目,一切都很好,但是,当项目更新时,[ID]列不再位于该项目的计算列中。
所以,在创作时:“IR-40-TheTitleIsHere”,但在编辑之后,它是“IR - TheTitleIsHere”。
任何人都对为什么会发生这种情况有所了解?
答案 0 :(得分:4)
我确认了上面提到的行为。任何添加/编辑都将清除[ID]部分。如果您编辑列表中的列并更新公式,它将更新所有列表项是正确的(直到您对项目进行编辑)。
我找到了this post that mentions the same problem。
听起来唯一的解决方案就是使用SharePoint Designer创建一个简单的工作流程来更新列表中的文本字段。
答案 1 :(得分:1)
我有一个类似的问题。通过其他博客和专家,我发现不应在计算列中使用[ID]列,因为它会造成严重破坏并导致许多错误。对不起 - 删除ID列,你应该没事。
答案 2 :(得分:1)
这个问题有点陈旧,但我遇到了同样的问题并找到了解决方案。这是一个非常具体的修复,并不会帮助每个人 - 它涉及在内容编辑器Web部件中使用javascript来更新计算字段。
这个网站 - http://blog.pathtosharepoint.com/2008/09/01/using-calculated-columns-to-write-html/ - 给出了一个如何使用javascript的例子,就像我使用它一样..重要的代码块是第一个while循环。重点是从列表中获取开箱即用的ID列,并更新任何计算字段需要ID。
在我的情况下,我在计算字段中有一个URL,需要将ID作为参数..当然,由于您无法将ID放在计算字段中,因此无法正常工作。我做的是在我的计算字段的url的ID参数中放入“?ID = null”,然后我将其替换为使用javascript检索的ID ..因此,无论何时加载页面,js都会启动并更新所有具有正确ID的URL。
答案 3 :(得分:0)
我知道这已经很老了,但我无法在其他任何地方找到问题的新版本,而ferr的上述答案为我解决了问题,但并不是很清楚所以我认为我是&#39 ; d更新它。
这假设你想在输出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