0

本番デプロイメントでは、他の2つの非表示フィールドを参照する数式で構成される計算フィールドがあります。これは、バージョンを決定するための小さなロジックを備えた単純な連結です。

=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があります。

任意の提案をいただければ幸いです!

4

1 に答える 1

1

フィールドを再表示し(ある種のユーティリティを使用して、非常に簡単に記述できます)、数式を保存して非表示にします。ただし、SPDワークフローやイベントレシーバーなど、他の方法で計算フィールドに入力する必要があると思います。

于 2010-12-16T03:08:46.583 に答える