我正在向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;
}
答案 0 :(得分:1)
你有没有理由不能使用custom action feature?例如,使用与以下内容类似的要素元素代码,但修改CustomAction element的序号以找到菜单选项:
<?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}&ListId={ListId}" />
</CustomAction>
</Elements>
设置内容类型应确保该功能不适用于文件夹。如果由于某种原因显示并且似乎无法禁用它,您可以使用JavaScript / jQuery从文件夹中隐藏菜单选项。
答案 1 :(得分:0)
在包含用户控件的功能的元素XML中,在那里添加序列:
Control Id="AdditionalPageHead"
ControlSrc="~/_ControlTemplates/blah/blah.ascx" Sequence="229"