【问题标题】:Custom Action Menu for particular Sharepoint List特定 Sharepoint 列表的自定义操作菜单
【发布时间】:2025-12-04 00:50:01
【问题描述】:

我希望我的自定义操作菜单应用于特定列表;目前它使用以下 XML 指定,并应用于所有列表!

更具体地说;我什至希望将此自定义操作应用于特定列表的特定视图...

<CustomAction
    Id="MyCustomActionId"
    Title="My Custom Action"
    Description="My Custom Action Description"
    RequireSiteAdministrator="FALSE"
    RegistrationType="List"
    GroupId="ActionsMenu"
    Sequence="1000"
    Location="Microsoft.SharePoint.StandardMenu" >
    <UrlAction Url="{SiteUrl}/_layouts/MySharepointArtifacts/MyCustomAction.aspx?ListId={ListId}"/>
  </CustomAction>

我该怎么做?

【问题讨论】:

  • 我已经有 stsadm 扩展来修复查找字段。添加另一个扩展名会很好。我可以访问通过 Sharepoint 对象模型配置的自定义操作吗?
  • 我也尝试在列表的 schema.xml (List / Views / ViewHeader) 中添加链接,并被用户接受。在那里,我需要知道 UrlAction ~site moniker 的等效项以提供

标签: sharepoint sharepoint-2007


【解决方案1】:

创建一个内容类型(基于您要在其上创建 ECB 菜单的项目)并将该内容类型添加到您的列表中。创建一个 customAction 并将其注册到内容类型。 ECB 菜单只会显示在您添加内容类型的列表中给定内容类型的项目上。

这是基于内置文档内容类型的内容类型:

    <?xml version="1.0" encoding="utf-8"?>
<Elements Id="f55bc095-86f5-4c0a-961e-0e8f8e6c50ed" xmlns="http://schemas.microsoft.com/sharepoint/">
  <ContentType ID="0x0101002936a05e70da4cf2a6846c669da7fdb6"
               Name="CTName"
               Group="CT group Name"
               Description="CT description"
               Version="0">
    <FieldRefs>...

为内容类型创建自定义操作(参考内容类型 id):

    <CustomAction
        Id="MyCustomActionId"
        Title="My Custom Action"
        Description="My Custom Action Description"
        RequireSiteAdministrator="FALSE"
        RegistrationType="ContentType"
RegistrationId="0x0101002936a05e70da4cf2a6846c669da7fdb6"
        GroupId="ActionsMenu"
        Sequence="1000"
        Location="EditControlBlock" >
        <UrlAction Url="{SiteUrl}/_layouts/MySharepointArtifacts/MyCustomAction.aspx?ListId={ListId}"/>
      </CustomAction>

【讨论】:

  • 我可能是错的,但对我来说,这段代码只适用于“Location="EditControlBlock"。
  • @lividsquirrel 是正确的——当 Location="Microsoft.SharePoint.StandardMenu" 和 GroupId="ActionsMenu" 时,通过上述方法将 CustomAction 锁定到特定的内容类型 ID 不起作用,但是当 Location="EditControlBlock" 时它确实有效(再次如@lividsquirrel 所述)。
  • 必须使用 Location="EditControlBlock" 才能使其工作是正确的。我会更新我的答案。
【解决方案2】:

将 customActions 定位到特定列表并不容易。我发现的一个非常小的描述在这里:http://www.dotnetprodigy.com/2009/01/how-to-create-custom-action-specific-to.html(还有另一个在这里:http://mnish.blogspot.com/2009/04/create-custom-action-specific-to-list.html

【讨论】:

    最近更新 更多