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

Mar*_*ski 7 sharepoint web-parts sharepoint-2010

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

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

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

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

dje*_*eeg 13

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

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

UPDATE

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

Microsoft.SharePoint.WebControls.ListTitleViewSelectorMenu.SingleWebPartPresentOnPage

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

UPDATE

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

<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>
Run Code Online (Sandbox Code Playgroud)

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


小智 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> 
Run Code Online (Sandbox Code Playgroud)


MgS*_*Sam 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() { };
Run Code Online (Sandbox Code Playgroud)

在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() { };  
Run Code Online (Sandbox Code Playgroud)

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

另请注意,您的Web部件ID可能不同,因此您应该仔细检查是否将焦点放在正确的Web部件上.

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

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


Mar*_*ski 4

单击列表(将焦点设置在其上)解决了“问题”;)