【问题标题】:"List Tools" tab is no longer available after adding webpart to the page将 Web 部件添加到页面后,“列出工具”选项卡不再可用
【发布时间】:2011-06-18 10:42:37
【问题描述】:

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

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

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

//编辑:我找到了一个“解决方案”。功能区与“实际”webpart 相连。单击列表(设置焦点),标签再次可见:D

【问题讨论】:

  • 你最后做了什么?我渴望一个好的解决方案!

标签: sharepoint sharepoint-2010 web-parts


【解决方案1】:

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

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

更新

你可以看到隐藏视图选择器的代码:

Microsoft.SharePoint.WebControls.ListTitleViewSelectorMenu.SingleWebPartPresentOnPage

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

更新

好的,我认为这会起作用,使用以下代码添加 内容编辑器 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>

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

【讨论】:

  • 当您说“这将起作用”时,Update 2 是什么意思。这不就是一遍遍点击webpart吗?
  • 不,他使用的是setTimeout 而不是setIntervalsetInterval 会让这种情况重演。但是,我试过了,但在我的情况下它不起作用。
  • 我试过这个,它有点工作(Sharepoint Server 2010)。页面加载后,整个功能区开始显示 - 如果您使用 jquery 在列表上“单击”,您会得到相同的结果。如果在不自动打开功能区的情况下显示功能区选项卡会更好。 - 啊!查看@katrine 的答案 - 就是这样做的!
【解决方案2】:

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

【讨论】:

  • 我认为这应该是公认的答案(至少对于 Sharepoint 在线)。
【解决方案3】:

在调试器中对 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 测试版中:

//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 中发生变化)。

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

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

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

【讨论】:

    【解决方案4】:

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

            <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> 
    

    【讨论】:

    • 啊!这似乎在我的 Sharepoint Server 2010 上几乎成功了。页面加载后,我可以看到功能区选项卡,而无需打开整个功能区;但是,如果我在功能区或列表之外的屏幕上单击任意位置,功能区选项卡会再次消失。
    • 为什么要设置计时器?我在没有计时器的情况下尝试了它,它似乎也能正常工作 - 好吧,那就是:`_spBodyOnLoadFunctionNames.push();`
    • 我也有同样的问题。如果我在列表之外单击,它就会消失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多