Вкладка «Инструменты списка» больше не доступна после добавления веб-части на страницу - PullRequest
7 голосов
/ 31 января 2011

в SharePoint 2010 Я добавил свой список вышеупомянутых веб-частей (стандартный список или список библиотеки документов - это не имеет значения).После этого вкладка «Список инструментов» не отображается.После некоторых копаний я обнаружил, что эта проблема существует, даже если я добавляю одну из стандартных веб-частей SharePoint.

Вот та же проблема и описание, как ее воспроизвести: http://www.endusersharepoint.com/STP/viewtopic.php?f=10&t=2027

Есть кто-нибудьнашел решение или реальный обходной путь для этого?

// РЕДАКТИРОВАТЬ: я нашел "решение".Лента связана с «актуальной» веб-частью.Один клик по списку (чтобы сфокусироваться на нем) и вкладка снова видна: D

Ответы [ 4 ]

13 голосов
/ 31 января 2011

Когда вы добавляете веб-часть к стандартным представлениям списка, страница больше не классифицируется как страница представления списка, а вместо этого классифицируется как страница приложения.

Это означает, что вы потеряете меню ленты, а также селектор вида в крошке.

ОБНОВЛЕНИЕ

Вы можете увидеть код, который скрывает селектор вида в:

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 на ячейку зоны веб-части веб-части представления списка.

8 голосов
/ 05 июля 2013

Это сработало для меня, но оно начинается с выбранной вкладки документов, и я предпочел, чтобы для начала была выбрана вкладка просмотра по умолчанию, поэтому я просто добавил в код простую строку, заново выберите вкладку по умолчанию: *

        <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> 
5 голосов
/ 24 сентября 2012

После тонны обхода 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() { };  

Примечание : Это супер-хакерский и находится вMicrosoft никак не поддерживается (таким образом, вполне вероятно, что он изменится в будущей версии или, возможно, даже в окончательной первоначальной версии SharePoint 2013).

Также обратите внимание, что идентификаторы вашей веб-части, вероятно, будут другими, поэтому вам следует дважды проверить, что вы уделяете внимание правильной веб-части.

Объяснение: Он в основном перекрывает экземплярSP.Ribbon.WebPartComponent способность отменить выбор веб-части.Из того, что я могу сказать, свойство $ 3 / $ 3_1 хранит ссылку на экземпляр SP.Ribbon.WebPartComponent.

Если кто-нибудь знает лучший способ получить доступ к экземпляру SP.Ribbon.WebPartComponent, кроме $ 3 / $ 3_1свойство, пожалуйста, говорите, так как это сделало бы этот метод гораздо более надежным.

4 голосов
/ 31 января 2011

Щелчок по списку (фокусировка на нем) решил «проблему»;)

...