0

我在 Visual Studio 2010 中创建了一个自定义内容类型:

自定义 http://img204.imageshack.us/img204/439/customf.jpg

这里有我的自定义内容类型.... 我想在同一站点的子站点中使用此内容类型。现在我有这个:

http // XXXXX/......../Forms/AllItems.aspx

我想使用这个内容类型

http //XXXXX/SUBSITE...../Forms/AllItems.aspx...

在代码中,我将自定义内容类型与第一个文档库相关联,如下所示:

 <CustomAction
Id="SPTest.CustomMenuItem.ButtonClicked"
Location="CommandUI.Ribbon.ListView"
RegistrationId="{F9658A9F-3F04-48BD-A14A-9EBAF5DE9EE8}"
RegistrationType="List"
>

其中 RegistrationId 是文档库站点的 Id,但是当我输入此 RegistrationId 时,子站点文档库的 Id ......没有任何反应......

另一个问题:当我在此文档库中选择一个项目时,将显示“文档”选项卡.... 是否有某种方法可以显示 PATOne 规则引擎而不是文档选项卡?

4

2 回答 2

1

那是“自定义操作”,而不是“自定义内容类型”。提示:内容类型将包含一个“内容类型”元素。它看起来像:

<ContentType ID="0x01AB"
     Name="MyCustomContentType"
     Group="MyCustomContentTypeGroup"
     Description="Customized Content Type"
     Version="0">
   <FieldRefs>
    <FieldRef ID="{8c06beca-0777-48f7-91c7-6da68bc07b69}"
     Name="Created"
     DisplayName="Field1" />
    <FieldRef ID="{1df5e554-ec7e-46a6-901d-d85a3881cb18}"
     Name="Author"
     DisplayName="Field2" />
   </FieldRefs>
</ContentType>

此外,如果要针对内容类型进行注册,则 RegistrationId 不应是 guid。如果针对列表注册,则 RegistrationId 应该是列表的类型 ID,例如(站点中的文档库为 101),或者可能是特定列表的 GUID(在这种情况下,该操作仅适用于该列表)。我没有尝试过最后一个,但怀疑它会起作用。(编辑:在本讨论的底部被描述为以这种方式工作)

根据 guid 是什么,您可能已经为特定列表注册了自定义操作,但您的子站点中的列表将具有不同的 ID,因此自定义操作注册将不适用于它。

简而言之,您可以将自定义操作添加到:

  • 一个特定的列表,这就是我认为你所做的。
  • 站点/子站点中给定类型的所有列表
  • 然后您在这些列表中使用的内容类型。(我没试过)

要针对内容类型进行注册,我希望注册看起来像:

<CustomAction 
    Id="SPTest.CustomMenuItem.ButtonClicked"              
    Location="CommandUI.Ribbon.ListView"
    RegistrationType="ContentType"
    RegistrationId="0x01AB"

注意 RegistrationType 和 RegistrationId

于 2012-06-27T09:46:00.373 回答
0

这是我的内容类型

<?xml version="1.0" encoding="utf-8"?>
 <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="SPTest.CustomMenuItem.ButtonClicked"
Location="CommandUI.Ribbon.ListView"
RegistrationId="{F9658A9F-3F04-48BD-A14A-9EBAF5DE9EE8}"
RegistrationType="List"
>
<CommandUIExtension>
  <CommandUIDefinitions>
    <CommandUIDefinition
      Location="Ribbon.Tabs._children">
      <Tab
        Id="Ribbon.PATOneRule"
        Title="PATOne Rule Engine"
        Sequence="501">
        <Scaling
          Id="Ribbon.PATOneRule.Scaling">
          <MaxSize
            Id="Ribbon.PATOneRule.MaxSize"
            GroupId="Ribbon.PATOneRule.PATOneRuleGroup"
            Size="OneLargeTwoMedium"/>
          <Scale
            Id="Ribbon.PATOneRule.Scaling.PATOneRuleScaling"
            GroupId="Ribbon.PATOneRule.PATOneRuleGroup"
            Size="OneLargeTwoMedium" />
        </Scaling>
        <Groups Id="Ribbon.PATOneRule.Groups">
          <Group
            Id="Ribbon.PATOneRule.PATOneRuleGroup"
            Description="Workflow Rules"
            Title="Workflow Group"
            Sequence="52"
            Template="Ribbon.Templates.CustomTemplateExample">
            <Controls Id="Ribbon.PATOneRule.PATOneRuleGroup.Controls">
              <Button
                Id="Ribbon.PATOneRule.PATOneRuleGroup.NewWorkflow"
                Image32by32="/PublishingImages/_t/new_jpg.jpg"
                Command="PATOneRule.NewWorkflow"
                Sequence="15"
                Description="Create New Workflow"
                LabelText="New Workflow"
                TemplateAlias="cust1"/>
              <Button
                Id="Ribbon.PATOneRule.PATOneRuleGroup.RunWorkflow"
                Image32by32="/PublishingImages/_t/play_jpg.jpg"
                Command="PATOneRule.RunWorkflow"
                Sequence="15"
                Description="Run Selected Workflow"
                LabelText="Run Workflow"
                TemplateAlias="cust2"/>
              <Button
               Id="Ribbon.PATOneRule.PATOneRuleGroup.EditWorkflow"
               Image32by32="/PublishingImages/_t/edit_jpg.jpg"
               Command="PATOneRule.EditWorkflow"
               Sequence="15"
               Description="Edit Selected Workflow"
               LabelText="Edit Workflow"
               TemplateAlias="cust3"/>
            </Controls>
          </Group>
        </Groups>
      </Tab>
    </CommandUIDefinition>
    <CommandUIDefinition Location="Ribbon.Templates._children">
      <GroupTemplate Id="Ribbon.Templates.CustomTemplateExample">
        <Layout
          Title="OneLargeTwoMedium"
          LayoutTitle="OneLargeTwoMedium">
          <Section Alignment="Top" Type="OneRow">
            <Row>
              <ControlRef DisplayMode="Large" TemplateAlias="cust1" />
              <ControlRef DisplayMode="Large" TemplateAlias="cust3" />
              <ControlRef DisplayMode="Large" TemplateAlias="cust2" />
            </Row>
          </Section>
        </Layout>
      </GroupTemplate>
    </CommandUIDefinition>
  </CommandUIDefinitions>
  <CommandUIHandlers>
    <CommandUIHandler
      Command="PATOneRule.NewWorkflow"
      CommandAction="javascript:__doPostBack('NewWorkflow', '')" />
    <CommandUIHandler
     Command="PATOneRule.EditWorkflow"
     CommandAction="javascript: 
     function getId() { 
       var ctx = SP.ClientContext.get_current();
       var selectedItems = SP.ListOperation.Selection.getSelectedItems(ctx);
       var key;
       var itemsSelected;
       for (key in selectedItems) {
       itemsSelected = itemsSelected + ', ' + selectedItems[key].id;
      } 
      __doPostBack('EditWorkflow',itemsSelected); 
     }
     getId();"
     EnabledScript="javascript:
     function singleEnable() { 
       var items = 
       SP.ListOperation.Selection.getSelectedItems(); 
       var ci = CountDictionary(items); 
       return (ci == 1); 
     } 
     singleEnable();"
     />
    <CommandUIHandler
    Command="PATOneRule.RunWorkflow"
    CommandAction="javascript: 
     function getId() { 
       var ctx = SP.ClientContext.get_current();
       var selectedItems = SP.ListOperation.Selection.getSelectedItems(ctx);
       var key;
       var itemsSelected;
       for (key in selectedItems) {
       itemsSelected = itemsSelected + ', ' + selectedItems[key].id;
      } 
      __doPostBack('RunWorkflow',itemsSelected); 
     }
     getId();"
    EnabledScript="javascript:
     function singleEnable() { 
       var items = 
       SP.ListOperation.Selection.getSelectedItems(); 
       var ci = CountDictionary(items); 
       return (ci>0); 
     } 
     singleEnable();"
     />
  </CommandUIHandlers>
</CommandUIExtension>

于 2012-06-27T08:24:07.800 回答