Sharepoint中为列表添加自定义的菜单项
项目需求需要在列表中添加自定义的菜单项以实现某些特定的功能,这里就把实现的过程和大家分享一下。主要有一下几个步骤:
1) 创建内容类型ContentType
Element.xml文件的代码如下:
<?xml version= "1.0" encoding= "utf-8" ?> <Elements xmlns= "http://schemas.microsoft.com/sharepoint/" > <!-- 父内容类型: 项目 (0x01) --> <ContentType ID= "0x0100b06c65fb90e74832b61609d1a82cafe7" Name= "CT-Information" Group= "研究院" Description= "信息" Inherits= "FALSE" Version= "0" > <FieldRefs> <FieldRef ID= "{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name= "Title" DisplayName= "标题" /> <FieldRef ID= "{9EBAD2D9-1346-489D-AEAF-67F21186845C}" Name= "Information_Content" DisplayName= "信息内容" /> </FieldRefs> <XmlDocuments> <XmlDocument NamespaceURI= "http://schemas.microsoft.com/sharepoint/v3/contenttype/forms" > <FormTemplates xmlns= "http://schemas.microsoft.com/sharepoint/v3/contenttype/forms" > <Display>DIS_CatrShowForm</Display> <Edit>DIS_CatrAddForm</Edit> <New>DIS_CatrAddForm</New> </FormTemplates> </XmlDocument> </XmlDocuments> </ContentType> </Elements> |
2) 接下来创建一个CustomAction文件
Element.xml的代码如下:
<?xml version= "1.0" encoding= "utf-8" ?> <Elements xmlns= "http://schemas.microsoft.com/sharepoint/" > <CustomAction Id= "e157dacd-cd1a-42ba-b0ef-45296243b2aa" Title= "推荐" RegistrationType= "List" RegistrationId= "10090" Location= "EditControlBlock" Sequence= "1000" > <UrlAction Url= "javascript:var options={url:'/_layouts/Bingosoft.DIS/Recommend/Recommend.aspx?ID={ItemId}&List={ListId}',title:'推荐信息',width:700,height:600};SP.UI.ModalDialog.showModalDialog(options);" /> </CustomAction> </Elements> |
需要着解释的即文中红色标注的节点的内容。
由节点的名称CustomAction可以看出该节点主要用来创建自定义的菜单项,一下就是其各个属性对应的含义:
Title:菜单项的名称,本例为:“推荐“
RegistrationType:要注册的类型,本例为列表
RegistrationId:要注册绑定的定义好的列表模板的类型
节点边的子节点:UrlAction:该节点的作用主要是给自定义的action添加一个url,就如同我们点击列表项右键的编辑菜单项,然后就会弹出一个编辑页一样的效果。
本例中主要是实现一个推荐的菜单项,UrlAction中Url属性的值为一段js代码,主要实现的作用为:打开一个SP.UI.ModelDialog对话框显示出一个模态页面。
这段代码的意思为:
首先定义一个参数项options
url:为要展示的页的Url,这里有两个参数分别为当前选择的项的id即ItemID和当前的List列表的ID即ListId,这样我们在弹出的页面的Page_Load函数里,通过这两项即可获得所需的列表项的所有信息。
Withd,height,设置弹出的模态页的宽高
然后调用SP.UI.ModelDialog.showModelDialog(options),并将之前定义好的参数集合项传递作为参数传递给弹出的模态页。
3) 在弹出的模态对话框的中的Page_Load函数里做以下处理
if (Request[ "ID" ] != null && Request[ "List" ] != null ) { SPList spList = SPContext.Current.Web.Lists[ new Guid(Request[ "List" ].ToString())]; SPListItem spItem = spList.GetItemById(Convert.ToInt32(Request[ "ID" ].ToString())); } 红色标记的那两行代码即获取用户操作的List列表,获取列表中的用户操作的那一项,然后就根据各自的需要通过spItem[“索引”]的形式获取你所需要的值吧。 |
好了到这里就完成了List自定义的菜单项的创建。
显示一下效果:
图3-1 列表自定义菜单项示意图
到这里已经完成了为sharepoint创建自定义的菜单项,快来试试吧。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构