我有一个从自定义网站定义创建的SharePoint网站。网站定义具有以下功能:
在站点配置过程中,我按照上面的顺序通过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。那么当我浏览我的网站时,是什么导致这些多个条目出现?
答案 0 :(得分:3)
我多次遇到过这个问题。这不是一个错误,很可能你的列表模板的elements.xml中存在语义错误。
如果列表定义包含多个默认视图,则会显示上述症状。检查列表模板的elements.xml文件,确保其中没有多个View-Element。
亲切的问候 Ramon的
答案 1 :(得分:1)
我建议你打电话给微软,这听起来像个bug。
P.S。没有看到创建列表的实际解决方案,我们无法确定发生了什么,也许某个功能被激活了两次......
答案 2 :(得分:1)
今天我遇到了这个问题,在阅读了上述答案后,我提出了一个简单的解决方案。只需创建一个新的默认视图,文档库将再次正常显示。
亲切的问候,
Thijmen Groenewegen
P.S
我通过将库从一个地方迁移到另一个地方来“创建”相同的两个库。在旧地方,图书馆只展示了一次。如果我查看该库的默认视图,则会将两个视图检查为“默认”。
答案 3 :(得分:1)
Groenewegen就在现场。
在我在子网站上运行Export-SPWeb后,我在网站上找到了两个公告列表,然后在Import-SPWeb上将其移动到新的网站集。
要修复它,我为列表创建了一个新的默认视图,所有列表项,从两个所有项目视图中选择一个并将其删除,问题已得到解决。
公告列表在“查看所有网站内容”页面上显示两次,并且在查看“所有项目”页面时,数据显示两次。
此外,在创建新的默认视图之前必须执行的中间步骤是打开列表或库并在URL中添加“?contents = 1”,以便打开Web部件维护页面并“关闭” “其中一个重复。您必须执行此操作,因为如果存在多个Web部件,则Web部件功能区将不会显示在“通知”页面上,并且您需要功能区才能访问视图下拉菜单并创建新视图。
答案 4 :(得分:0)
您是否尝试过:
list.RootFolder.Name
(显示“内部”名称 - 网址的一部分)
list.Title 显示显示名称(可以显示两次或更多次)。
这也可能是您获得多个列表的原因。您可能已经添加了相同的显示名称但不是“内部”名称?