2

我有一个从自定义网站定义创建的 SharePoint 网站。站点定义具有以下功能:

  1. 自定义内容类型。
  2. 其 schema.xml 文件引用该内容类型的自定义列表模板。
  3. 引用我上面的列表模板功能的列表实例功能。

在站点配置过程中,我按照上面的顺序通过 C# 代码激活了这些功能中的每一个(每个都在 SPWeb 级别)。我生成的网站看起来与我预期的一样,并且工作正常,但它有一个奇怪的工件,即我的网站的“所有网站内容”页面显示了我的自定义列表两次。

我的列表运行良好——它的物品接收器正确触发并且只触发一次。在SharePoint Manager (SPM)中,我还看到列表显示了两次,当我展开树查看属性时,它们在两个列表中看起来相同(甚至列表中的列表项)。我怀疑我可能在自欺欺人,而 SPM 可能只是两次查看同一个列表,而一些实际的流氓列表位于我网站的阴影中。

那么,这里可能出了什么问题?我怎么能创建多个同名列表?如何正确创建此列表?我怎样才能正确地清理现有网站中表现出这种行为的怪异之处?


编辑: 为了回应 Michael Stum 的问题,我创建了这个控制台应用程序来遍历站点列表并获取 ID:

using (SPSite site = new SPSite("http://myserver/projects/myproject"))
{
    using (SPWeb web = site.OpenWeb())
    {
        var lists = web.Lists;
        foreach (SPList list in lists)
        {
            Console.WriteLine(list.ID + ": " + list.Title);
        }
    }
}

这段代码显示了我的列表两次——相同的标题,相同的 ID。


另一个编辑: 我查看了该网站的 SharePoint 内容数据库,并执行了以下查询:

SELECT * FROM AllLists where tp_webid = '<my SPWeb guid>'

这表明我从上面的 C# 代码中检索到的只有一个带有标题和 GUID 的实际列表。那么,当我浏览我的网站时,是什么导致这些多个条目出现?

4

5 回答 5

3

我已经多次遇到这个问题。这不是错误,很可能您的列表模板的 elements.xml 中有语义错误。

如果列表定义包含多个默认视图,则会出现您上面描述的症状。检查列表模板的 elements.xml 文件并确保其中没有多个 View-Element。

亲切的问候拉蒙

于 2011-11-07T08:55:56.680 回答
1

Groenewegen 是正确的。

在子网站上运行 Export-SPWeb 然后 Import-SPWeb 将其移动到新网站集后,我最终在网站上获得了两个公告列表。

为了解决这个问题,我为列表创建了一个新的默认视图 All List Items,选择了两个 All Items 视图中的一个并将其删除,问题就解决了。

公告列表在查看所有站点内容页面上显示了两次,并且在查看所有项目页面时数据显示了两次。

此外,在创建新的默认视图之前必须采取的中间步骤是打开列表或库并将“?contents=1”添加到 URL,以便您可以打开 Web 部件维护页面并“关闭”其中一个重复项。您必须这样做,因为如果存在多个 Web 部件,Web 部件功能区将不会显示在“公告”页面上,并且您需要功能区来访问视图下拉菜单并创建新视图。

于 2013-03-15T14:28:26.270 回答
1

I suggest you put a call in to Microsoft, this sounds like a bug.

P.S. without seeing the actual solution that creates the list we can't determine what's happening, perhaps a feature got activated twice...

于 2009-06-16T19:50:51.783 回答
1

今天我遇到了这个问题,在阅读了上述答案后,我想出了一个简单的解决方案。只需创建一个新的默认视图,文档库就会再次正常显示。

亲切的问候,

蒂门·格勒内韦根

附言

我通过将库从一个地方迁移到另一个地方“创建”了相同的两个库。在老地方,图书馆只展示过一次。如果我查看该库上的默认视图,则两个视图被选中为默认值。

于 2012-04-11T09:33:50.057 回答
0

您是否尝试过:

list.RootFolder.Name

(显示“内部”名称 - 网址的一部分)

list.Title显示显示名称(可以出现两次或多次)。

这也可能是您获得多个列表的原因。您可能使用相同的显示名称添加了它们,但使用了不同的“内部”名称?

于 2009-06-16T19:12:53.850 回答