【问题标题】:Unable to delete content type from a Sharepoint list programmatically无法以编程方式从 Sharepoint 列表中删除内容类型
【发布时间】:2011-04-16 13:43:46
【问题描述】:

我目前无法以编程方式从 Sharepoint 列表中删除内容类型。我想要做的是我想安装一个更新版本的自定义内容类型(它有额外的字段),所以我选择删除原始版本并重新添加最新版本。下面是代码:

bool requireUpdate = false
SPContentType tempCtId = existingWeb.AvailableContentTypes["Item"];
List<SPListITem> itemsWithTEmpCt = new List<SPListItem>();

foreach (SPListItem item in listToUpdate.Items)
{
    if (item.ContentType.Name.Equals(ctToUpdate))
    {
        item["Content Type"] = "Item";
        itemsWithTempCt.Add(item);
        requireUpdate = true;
    }
}

if (requireUpdate)
{
    foreach (SPListItem itemWithTempCt in itemsWithTempCt)
    {
        itemWithTEmpCt.File.CheckOut();
        itemWithTempCt.Update();
        itemWithTEmpCt.File.CheckIn("converted ct");
    }
}

// reset vars
requireUpdate = false;
itemsWithTempCt = new List<SPListItem>();

// changing the folder's ct, if any
foreach (SPListItem folder in listToUpdate.Folders)
{
    if (folder.ContentType.Name.Equals(ctToUpdate))
    {
        folder["Content Type"] = "Item";
        itemsWithTempCt.Add(folder);
        requireUpdate = true;
    }
}

if (requireUpdate)
{
    foreach (SPListItem itemWithTempCt in itemsWithTempCt)
    {
        itemWithTempCt.Update();
    }
}

listToUpdate.ContentTypes[ctToUpdate].Delete(); //<--- exception here
SPContentType contentTypeToSet = web.AvailableContentTypes[ctToUpdate];
listToUpdate.ContentTypes.Delete(tempCtId.Id);
listToUpdate.ContentTypes.Add(contentTypeToSet);
//....

我选择添加项目内容类型,因为该列表中只有一种内容类型(因此我无法删除它)。发生的事情是,在它说“这里有异常”的那一行,抛出了一个异常:

Content Type is still in use.

经过一番谷歌搜索,我尝试了许多不同的场景,但到目前为止都没有奏效:

-版本 == 1.0 的文件夹没有更新其内容类型...因此内容类型仍在使用中(很公平)。

-所有文档和文件夹都将其内容类型设置为“项目”,但它仍然抱怨内容类型仍在使用中。回收站中没有任何内容,没有次要版本的文件(doc lib 不允许),没有权限问题。

-尽管项目已完成,但它们仍在工作流程中。

列表位于站点级别,例如web.ParentWeb 将为您提供列表。我完全不知道什么仍然可以使用内容类型。有没有人有任何想法/或遇到过这样的问题?

谢谢。

【问题讨论】:

    标签: sharepoint sharepoint-2007 content-type


    【解决方案1】:

    是的,我们之前已经看到过,这是因为草稿项目是由其他人创建的并且从未签入,所以您看不到它们。 doc lib 设置下有一个工具,可让您获得没有签入版本的签出文件的所有权。

    【讨论】:

    • 我查看了您建议的结帐文件位置,但找不到任何文件。
    【解决方案2】:

    我认为您不能删除具有基于它的项目的内容类型

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 1970-01-01
      • 2011-09-19
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多