";由于对象的当前状态,操作无效";当我试图解封列表上的字段时

本文关键字:quot 字段 列表 无效 状态 于对象 对象 操作 | 更新日期: 2023-09-27 18:21:49

我在使用模式创建的列表中有几个字段。架构和列表似乎不同步,所以当我试图更改架构上某个字段的属性时,这些更改不会反映在列表上,除非它们是添加的(即新字段)。

我有几个需要解封的密封字段。但是,当我尝试使用SharePoint Manager或我编写的实用程序将Sealed设置为false时,我会得到错误:"由于对象的当前状态,操作无效。"我似乎找不到有关该错误的更多可用信息。

在我的实用程序中,这发生在以下线路上:

field.Sealed = false;

我甚至还没有到在抛出异常之前尝试更新字段的地步。领域SchemaXml看起来也不错。我看不出有什么问题。

此列表中的多个字段出现这种情况。

有人知道该怎么办吗?

";由于对象的当前状态,操作无效";当我试图解封列表上的字段时

错误是什么,失败的字段是什么?

根据MSDN,您不能更改开箱即用或外部数据字段:

  • InvalidOperationException:试图为SharePoint中内置的字段类型分配值。这些字段的真/假值必须保持在出厂设置
  • NotSupportedException:当SharePoint字段是外部数据列时,尝试分配false

更新(突出显示可能隐藏在评论中的信息):

调用SPBuiltInFieldId.Contains以避免(或检测)InvalidOperationException。如果SPBuiltInFieldId.Contains返回true,则无法设置Sealed属性。

根据Rich的回答,如果需要修改SPBuiltInFieldId集合中的列,可以在运行时将该列的GUID设置为新的GUID(),然后对该列进行所需的任何更改。请注意,Microsoft试图阻止您编辑这些列是有原因的。我需要修复小组日历中资源(设施)列的列表关系,这让我可以这样做