在生产部署中,我们有一个计算字段,该字段由引用其他两个隐藏字段的公式组成。这是一个简单的连接,用于确定版本
的一点逻辑=CONCATENATE(IF(_MajorVersion="","0",_MajorVersion),".",IF(_MinorVersion="","0",_MinorVersion))
用户无意中修改了列表的数据表视图中的公式,现在公式已损坏,如下所示
=CONCATENATE(IF(#NAME="","0",#NAME),".",IF(#NAME="","0",#NAME))
如果使用预先损坏的版本替换此公式,则不会保存,并且会出现以下错误
The formula refers to a column that does not exist. Check the formula for spelling mistakes or change the non-existing column to an existing column. at Microsoft.SharePoint.Library.SPRequestInternalClass.UpdateField(String bstrUrl, String bstrListName, String bstrXML)
at Microsoft.SharePoint.Library.SPRequest.UpdateField(String bstrUrl, String bstrListName, String bstrXML)
列_MajorVersion和_MinorVersion确实存在,但隐藏并定义如下:
<Field SourceID="http://schemas.microsoft.com/sharepoint/3.0"
ID="{GUID}"
Name="_MajorVersion"
StaticName="_MajorVersion"
DisplayName="_MajorVersion"
Group="ApplicationStuff"
Type="Number"
Required="FALSE"
ReadOnly="FALSE"
Sealed="FALSE"
Hidden="TRUE"
ShowInListSettings="FALSE"
ShowInEditForm="FALSE"
ShowInDisplayForm="FALSE"
ShowInNewForm="FALSE" />
我知道可以部署一个功能,使这些列可见,修复问题,然后重新隐藏它们。但是,有一个很多的繁文缛节才能实现。有人知道如何在不部署代码的情况下执行此操作吗?我还考虑过重新创建列表,但此列表中有数千个SPListItem。
任何建议都将不胜感激!
答案 0 :(得分:1)
取消隐藏字段(使用某种实用程序,编写非常简单),保存公式并隐藏。但我认为您应该以其他方式填写计算字段,例如SPD工作流程或事件接收器。