C# 自定义列表中的SharePoint自定义上下文菜单显示在文件夹上,而不仅仅是文件上
我已经创建了一个自定义列表这是列表模板:C# 自定义列表中的SharePoint自定义上下文菜单显示在文件夹上,而不仅仅是文件上,c#,visual-studio-2008,sharepoint,custom-action,sharepointdocumentlibrary,C#,Visual Studio 2008,Sharepoint,Custom Action,Sharepointdocumentlibrary,我已经创建了一个自定义列表这是列表模板: <ListTemplate Name="CustomDocumentLibrary" DisplayName="Document Library" Description="" BaseType="1" Type="10101" OnQuickLaunch="TRUE" SecurityBits="11"
<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}&ListItemID={ItemId}&Action=Copy"/>
此上下文菜单同时显示在文件和文件夹上,我的上下文memu是否可以仅显示在文件上?您可以注册内容类型上的操作。但这可能不适合您的情况?我从来没有想到如何在代码或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>
自定义函数\u AddDocLibMenuItems(m,ctx){
var otype=currentItemFSObjType=GetAttributeFromItemTable(itemTable,“otype”,“FSObjType”);
如果(otype!=1){//1=文件夹
var itemId=GetAttributeFromItemTable(itemTable,“itemId”,“Id”);
var listId=ctx.listName;
var action='转到页面('+ctx.HttpRoot+'/'布局/MyPage.aspx?ListId='+ListId+'&ListItemID='+itemId+');
var option=CAMOpt(m,‘做点什么’,动作,‘/_layouts/IMAGES/10.gif’,‘,1110);
option.id=“id\u Do\u Something”;
}
返回false;
}
功能转到页面(第页){
window.location=页面;
}
一个不幸的副作用是项目总是在上下文菜单中的第一位。
<CustomAction
Id="ContextMenu"
Location="EditControlBlock"
Title=Permissions"
**RegistrationType="ContentType"**
ShowInLists="FALSE"
ImageUrl ="~Site/_layouts/nks.PNG"
**RegistrationId="0x0101"**>
<UrlAction Url="your URL"/>
</CustomAction>