2012-01-30 36 views
1

スキーマを使用して作成されたリストには、いくつかのフィールドがあります。スキーマとリストの同期が外れているように見えるので、スキーマのフィールドの属性を変更しようとすると、それらの変更は追加(つまり新しいフィールド)でない限りリストに反映されません。"オブジェクトの現在の状態のため、操作が有効ではありません。"リストのフィールドを開封しようとしたとき

私は開封するために必要ないくつかの密封フィールドがあります。しかし、SharePoint Managerを使用するか、または私が書いたユーティリティを使用してSealed = falseを設定しようとすると、エラーが発生します。 "操作はオブジェクトの現在の状態のため有効ではありません。"私はエラーについてもう利用可能な情報を見つけることができないようです。私のユーティリティで

が、これはライン上で起こる:

field.Sealed = false; 

私も例外がスローされる前にフィールドを更新しようとしているのポイントにもらっていません。 Field.SchemaXmlもきれいに見えます。私はそれが間違っているとは思わない。

これは、このリストの複数のフィールドで発生しています。

誰にも分かりますか?

+0

これは私が経験した以前の正確なエラーではないかと思いますが、他のプロパティを変更する前にフィールドのシールを解除してUpdate()を呼び出す必要があります。 –

+0

私は何も変更しようとしていません。文字通り、私がフィールドで行う唯一の操作は、それを取得し、それを開封しようとすることです。その時点で例外がスローされます。私は幸運のないギフトとシズルのためだけにallowunsafeupdatesを試しました。 – Craig

答えて

1

エラーとは何か、失敗したフィールドは何ですか?

MSDNによると、あなたはボックスまたは外部のデータフィールドのうち、変更することはできません。

  • と、InvalidOperationException:試みがSharePointのに組み込まれているフィールドタイプに値を割り当てるために作られています。このようなフィールドの真偽値は工場出荷時設定のままでなければなりません。
  • NotSupportedException:SharePointフィールドが外部データ列の場合にfalseを代入しようとしました。 InvalidOperationExceptionがを避けるために

    コールSPBuiltInFieldId.Contains(または検出):

更新(コメントの中に隠されるかもしれない情報を強調表示します)。 SPBuiltInFieldId.Containsがtrueを返す場合、Sealedプロパティは設定できません。

+0

これはInvalidOperationExceptionで、Sealedプロパティにあります。これは、フィールド設定を削除したり、UIを使って意味のある方法で変更しないように切り替えることができるものです。 –

+0

申し訳ありませんが、どのプロパティが、どのフィールドですか? Sealedプロパティを変更しようとしているフィールドの名前またはGUIDは何ですか?エラーに基づいて、それはOOTBフィールドのように聞こえ、変更することはできません。 –

+0

これは私の古い同僚です。私たちは同時に電子メールで行き来しています。それが私が答える理由です。これはメモフィールドです。シールされた他のフィールドとの唯一の違いは、OMコードではなくXML定義に基づいてシールされている点です。現在、彼はコードを使用して開封を試みています。私はそれがここでの問題かどうか、それはもともとXMLで封印されていたのだろうかと思います。 –

1

SPBuiltInFieldIdコレクション内の列を変更する必要がある場合は、実行時に列のGUIDを新しいGUID()に設定し、必要な列に変更を加えることができます。 Microsoftがこれらの列を編集するのを止めさせる理由があることに注意してください。グループカレンダーのResources(Facilities)列のリスト関係を修正する必要がありました。これにより、私はそうすることができました。

+1

これは既存の回答の編集である必要があります。 – jeremy

関連する問題