我添加自定义上下文菜单项,在SharePoint中的SPDocumentLibrary列表文件(而不是文件夹)。下面的代码工作,但总是在上下文菜单,这是我不希望的顶部增加了我的自定义菜单项。我猜测,在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