将webpart添加到页面后,“列表工具”选项卡不再可用

时间:2011-01-31 08:31:41

标签: sharepoint sharepoint-2010 web-parts

在SharePoint 2010中,我已将我的webpart添加到上面的列表中(标准列表或文档库列表 - 没关系)。在此“列表工具”选项卡不可见之后。经过一番挖掘后我发现,即使我添加了一个标准的SharePoint WebParts,这个问题仍然存在。

以下是相同的问题和描述如何重现它: http://www.endusersharepoint.com/STP/viewtopic.php?f=10&t=2027

是否有人为此找到了解决方案或真正的解决方法?

//编辑:我找到了一个“解决方案”。功能区与“实际”webpart连接。单击列表(以设置焦点)并再次显示选项卡:D

4 个答案:

答案 0 :(得分:13)

当您将Web部件添加到标准列表视图时,该页面不再被归类为列表视图页面,而是被归类为应用程序页面。

这意味着您丢失了功能区菜单以及面包屑中的视图选择器。

<强>更新

您可以在以下位置查看隐藏视图选择器的代码:

Microsoft.SharePoint.WebControls.ListTitleViewSelectorMenu.SingleWebPartPresentOnPage

但我似乎无法找到隐藏功能区的代码。

<强>更新

好的,我认为这样可行,使用以下代码添加内容编辑器网页部件

<script>
setTimeout(function() {
    var elem = document.getElementById("MSOZoneCell_WebPartWPQ2");
    if(elem != null) {
        var dummyevent = new Array();
        dummyevent["target"] = elem;
        dummyevent["srcElement"] = elem;
        WpClick(dummyevent);
    }
}, 2000);
</script>

将MSOZoneCell_WebPartWPQ2 id替换为列表视图Web部件的Web部件区域单元格。

答案 1 :(得分:8)

这对我有用,但它从选择的文档选项卡开始,我更喜欢选择默认的浏览选项卡,所以我只是在代码中添加了一个简单的行,重新选择默认选项卡:

        <script>
        setTimeout(function() {
        var elem = document.getElementById("MSOZoneCell_WebPartWPQ2");
           if(elem != null) {
                var dummyevent = new Array();
                dummyevent["target"] = elem;
                dummyevent["srcElement"] = elem;
                WpClick(dummyevent);
                _ribbonStartInit("Ribbon.Browse", true)
            }
        }, 2000);
        </script> 

答案 2 :(得分:5)

在调试器中大量浏览SharePoint JS之后,我终于找到了一种方法来防止出现此问题。

在SharePoint 2010中:

//Set focus on our list web part
var webPart = document.getElementById('WebPartWPQ1');
WpClick({target: webPart});

//Prevent it from losing focus
SP.Ribbon.WebPartComponent.$3_1.deselectWebPartAndZone = function() { };

在SharePoint 2013 Beta中:

//Set focus on our list web part
var webPart = document.getElementById('MSOZoneCell_WebPartWPQ2');
WpClick({target: webPart});

//Prevent it from losing focus
SP.Ribbon.WebPartComponent.$3.deselectWebPartAndZone = function() { };  

注意:这是超级hacky,并且不受Microsoft支持(因此很可能在将来的版本中更改,甚至可能在SharePoint 2013的RTM中更改)。

另外,请注意您的网络部件ID可能会有所不同,因此您应该仔细检查是否将焦点放在正确的网络部件上。

说明:它基本上覆盖了SP.Ribbon.WebPartComponent取消选择Web部件的能力的实例。据我所知,$ 3 / $ 3_1属性存储了对SP.Ribbon.WebPartComponent实例的引用。

如果有人知道更好的方式来访问除$ 3 / $ 3_1属性之外的SP.Ribbon.WebPartComponent实例,请大胆说明,因为这会使这种方法更加健壮。

答案 3 :(得分:4)

点击列表(设置焦点)解决了“问题”;)

相关问题