Порядок пунктов меню SPDocumentLibrary с использованием Custom_AddDocLibMenuItems

StackOverflow https://stackoverflow.com/questions/1289891

Вопрос

Я добавляю настраиваемый элемент контекстного меню к документам (а не к папкам) в списке SPDocumentLibrary в SharePoint.Следующий код работает, но всегда добавляет пункт пользовательского меню вверху контекстного меню, чего я не хочу.Я предполагал, что последний параметр в CAMOpt — это порядковый номер, определяющий порядок, но, похоже, это не имеет никакого эффекта.Кто-нибудь знает, можно ли добавить собственный пункт контекстного меню внизу списка?

function Custom_AddDocLibMenuItems(m, ctx) {
    var otype = currentItemFSObjType = GetAttributeFromItemTable(itemTable, "OType", "FSObjType");
    if (otype != 1) {
        var itemId = GetAttributeFromItemTable(itemTable, "ItemId", "Id");
        var listId = ctx.listName;

        var action = 'Go_To_Page("' + ctx.HttpRoot + '/_layouts/custom/PAGES/mycustompage.aspx?ListId=' + listId + '&ListItemID=' + itemId + ');';
        CAMOpt(m, 'Custom Menu Item', action, '/_layouts/custom/IMAGES/action.gif', '', 110);
        CAMSep(m);
    }
    return false;
}

function Go_To_Page(page) {
    window.location = page;
}
Это было полезно?

Решение

Есть ли причина, по которой вы не можете использовать функция настраиваемых действий?Например, используйте код элемента функции, аналогичный приведенному ниже, но измените порядковый номер Элемент CustomAction чтобы найти пункт меню:

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <CustomAction
        Id="DoSomething"
        RegistrationType="ContentType"
        RegistrationId="0x0101"
        Location="EditControlBlock"
        Sequence="10001"
        ImageUrl="/_layouts/images/action.gif"
        Title="Do Something">
        <UrlAction Url="~site/_layouts/custom/PAGES/mycustompage.aspx?ListItemID={ItemId}&amp;ListId={ListId}" />
    </CustomAction>
</Elements>

Установка типа контента должна гарантировать, что эта функция не будет применяться к папкам.Если по какой-то причине он отображается и отключить его невозможно, вы можете использовать JavaScript/jQuery, чтобы скрыть этот пункт меню из папок.

Другие советы

В XML-элементах вашей функции, в которую вы включаете пользовательский элемент управления, добавьте туда последовательность:

Control Id="AdditionalPageHead"
       ControlSrc="~/_ControlTemplates/blah/blah.ascx" Sequence="229"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top