Настраиваемое контекстное меню SharePoint в настраиваемом списке отображается не на файлах, а на папках. - PullRequest
3 голосов
/ 14 апреля 2009

Я создал пользовательский список, вот шаблон списка:

<ListTemplate Name="CustomDocumentLibrary"
            DisplayName="Document Library"
            Description=""
            BaseType="1"
            Type="10101"
            OnQuickLaunch="TRUE"
            SecurityBits="11"
            Sequence="110"
            Image="/_layouts/images/itdl.gif"
            DocumentTemplate="101" />

Я добавил пользовательское действие:

   <CustomAction
Id="1611D96C-ABBD-4021-9183-60D8440BEB95"
Location="EditControlBlock"
Title="Send to Document Management"
ImageUrl="/_layouts/images/cmCopy.gif"
RegistrationType="List"
RegistrationId="10101">
<UrlAction Url="~site/Lists/DocumentLibrary/Forms/SendToDM.aspx?ListId={ListId}&amp;ListItemID={ItemId}&amp;Action=Copy"/>

Это контекстное меню отображается как для файлов, так и для папок. Возможно ли, чтобы мое контекстное меню отображалось только для файлов?

Ответы [ 3 ]

4 голосов
/ 14 апреля 2009

Вместо этого вы можете зарегистрировать действие для типа контента. Но что может не подойти в вашей ситуации?

3 голосов
/ 20 августа 2009

Я так и не понял, как это сделать в коде или XML, но у меня это работает в JavaScript.
Я добавил следующий код в AllItems.aspx:

<script type="text/javascript">
    function Custom_AddDocLibMenuItems(m, ctx) {
        var otype = currentItemFSObjType = GetAttributeFromItemTable(itemTable, "OType", "FSObjType");
        if (otype != 1) { // 1=folder
            var itemId = GetAttributeFromItemTable(itemTable, "ItemId", "Id");
            var listId = ctx.listName;
            var action = 'Go_To_Page("' + ctx.HttpRoot + '/_layouts/MyPage.aspx?ListId=' + listId + '&ListItemID=' + itemId + '");';
            var option = CAMOpt(m, 'Do Something', action, '/_layouts/IMAGES/10.gif', '', 1110);
            option.id = "ID_Do_Something";
        }
        return false;
    }

    function Go_To_Page(page) {
        window.location = page;
    }
</script>

Одним из нежелательных побочных эффектов является то, что пункт всегда находится первым в контекстном меню.

2 голосов
/ 16 декабря 2010
<CustomAction
Id="ContextMenu"
Location="EditControlBlock"
Title=Permissions"
**RegistrationType="ContentType"**
ShowInLists="FALSE"
ImageUrl ="~Site/_layouts/nks.PNG"
**RegistrationId="0x0101"**>
    <UrlAction Url="your URL"/>
</CustomAction>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...