在SharePoint中我们可以通过创建一个包含CustomAction元素定义的Feature来为列表项或文档添加一个自定义操作菜单项(Entry Control Block Item)。
在SharePoint中我们可以通过创建一个包含CustomAction元素定义的Feature来为列表项或文档添加一个自定义操作菜单项(Entry Control Block Item)。我们可以添加自定义命令到默认的SharePoint用户界面中。这些菜单命令允许用户在列表项或文档上执行特定操作。比如,我们可以在列表项或文档的菜单中增加一项,用来将用户重定向到我们的自定义的应用程序页面。通过这种方式,我们可以创建出于SharePoint列表项或文档的操作菜单紧密整合在一起的商业解决方案。
首先,创建一个自定义的Feature。我们可以将Feature定义在任何一个范围上,但通常定义在网站集或网站范围上。下面的例子定义了一个网站集范围(即Scope="Site")上的Feature,并引用了另一个CAML文件--elements.xml。
<Feature
Id="AA929AFF-4602-4d7f-A501-B80AC9A4BB52"
Title="A Sample Feature: Item Auditing"
Description="A sample Feature with an entry control block menu item"
Scope="Site"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="elements.xml" />
</ElementManifests>
</Feature>
定义一个Custom Action 我们使用CustomAction元素来定义SharePoint界面中各种类型的菜单项和链接。下面的CustomAction元素为文档库中的文档条目添加了一个自定义的菜单项。这是通过指定RegistrationType属性为List,RegistrationId属性为101来实现的。这是SharePoint中默认的文档库的类型Id。
<CustomAction
Id="ItemAuditing.ECBItemMenu"
RegistrationType="List"
RegistrationId="101"
ImageUrl="/_layouts/images/GORTL.GIF"
Location="EditControlBlock"
Sequence="300"
Title="View Audit History" >
<UrlAction
Url="~site/_layouts/ItemAudit.aspx
?ItemId={ItemId}&ListId={ListId}"/>
</CustomAction>
在我们创建了CustomAction元素后,还必须在其内部添加一个UrlAction元素,其中包括一个Url属性。当要把用户重定向到一个应用程序页面(如ItemAudit.aspx)时,我们还要考虑我们是将应用程序页面运行在当前网站上下文环境中还是当前网站集环境中。下面的例子中,在URL前面添加了动态标记~site,在运行时,~site会被替换为当前网站的URL。
~site/_layouts/ItemAudit.aspx
当我们通过定制的列表项操作菜单将用户重定向到一个自定义应用程序页面后,我们还需要将查询字符串传递到应用程序页面,以便可以通过编程获取到SPList和SPListItem对象。SharePoint支持另外两种动态标记:{ListId}和{ItemId}。SharePoint会用列表或文档库的GUID和列表项的ID号替换它们。
~site/_layouts/ItemAudit.aspx?ItemId={ItemId}&ListId={ListId}
这种方式允许后台自定义应用程序页面(如ItemAudit.aspx)在页面初始化时得到ListId和ItemId值,进而可以针对列表项或文档进行编程,实现用户期望的自动化任务。