2010-12-15 135 views
0

在生产部署中,我们有一个计算字段,该字段由引用其他两个隐藏字段的公式组成。这是用少量逻辑简单级联,用于确定版本基于另一个隐藏字段的SharePoint计算字段

=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" />

我知道这是可能部署一个功能,它将使这些列可见,解决问题,然后重新隐藏它们。但是,有很多红色磁带可以让这种情况发生。任何人都知道如何在不部署代码的情况下做到这一点?我也考虑重新创建列表,但是在这个列表中有成千上万的SPListItems。

任何建议,将不胜感激!

回答

1

取消隐藏字段(使用某种实用工具,写入非常简单),保存公式并隐藏回去。但我认为你应该用其他方式来填补计算的领域,例如SPD工作流程或事件接收器。