Xml Sharepoint 2010-隐藏“;标题「;自定义内容类型中的字段

Xml Sharepoint 2010-隐藏“;标题「;自定义内容类型中的字段,xml,sharepoint,sharepoint-2010,custom-lists,Xml,Sharepoint,Sharepoint 2010,Custom Lists,现在我正在定义一个新的自定义列表定义在自定义内容类型中,问题只是与列表关联的标题字段无法隐藏,我遵循了下面链接中的一些方法,但没有成功 只需添加列表定义,而不实现内容类型,就会使标题字段消失,但定义内容类型及其字段时,标题字段始终可见 Elements.xml <ContentType ID="0x01003EBF692DD17B4F71966712180C0D23D8" Name="ContactUsAssignments" Descript

现在我正在定义一个新的
自定义列表定义
自定义内容类型
中,问题只是与列表关联的
标题
字段无法隐藏,我遵循了下面链接中的一些方法,但没有成功

只需添加
列表定义
,而不实现内容类型,就会使标题字段消失,但定义内容类型及其字段时,标题字段始终可见

Elements.xml

  <ContentType ID="0x01003EBF692DD17B4F71966712180C0D23D8" Name="ContactUsAssignments"  
               Description="Contact Us Assignments content type">
    <FieldRefs>
      <FieldRef ID="{4B888F48-A039-46D0-B2E1-C67802097069}"/>
      <FieldRef ID="{6238a52d-2975-4e8a-9a1e-31b9cdc74129}"/>
      <RemoveFieldRef ID="{D3D0DDF1-F791-4FFF-893C-0C100B724F1A}" />
    </FieldRefs>
  </ContentType>
  <ContentTypes>
    <ContentTypeRef ID="0x01003EBF692DD17B4F71966712180C0D23D8"></ContentTypeRef>
</ContentTypes>
<Fields>
  <Field Type="Text" DisplayName="Title" Required="FALSE"
   ID="{D3D0DDF1-F791-4FFF-893C-0C100B724F1A}" StaticName="Title" Name="Title" Hidden="TRUE" />
</Fields>

我不知道我是否错过了什么,但方法已经足够清楚了。谢谢。

您是否尝试过在ContentType定义上方的Elements.xml文件中添加标题字段定义?我在下面的elements.xml文件中找到了两个添加字段定义的示例。您可以尝试这样做,并将Required设置为False,Hidden设置为True,然后看看是否有效


我从来没有这样做过,但是我有时会作弊,从列表定义中完全删除内容类型(保留为),并像Schema.xml中那样声明字段。以这种方式执行此操作会覆盖我的默认标题字段。

尝试使用Inherits=“False”来指定删除标题字段。比如说

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <!-- Parent ContentType: Item (0x01) 
       Tracked user activity. -->
  <ContentType ID="0x0100c592d12a1dfa42ae8614d54f45118f83"
               Name="User Activity"
               Group="User Activity Tracking"
               Description="Tracked user activity."
               Inherits="FALSE"
               Version="0">
    <FieldRefs>
      <!--Title field inherited from parent Item content type is not required.-->
      <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" />
      <FieldRef ID="{B2FCBA31-5888-4CB9-BCC8-7B1943161B40}" Name="UserActivityCreatedBy"/>
      <FieldRef ID="{B3F666F7-2DA3-402C-A1A2-A6AA9F4E3E86}" Name="UserActivityType"/>
      <FieldRef ID="{ABF63CC0-6201-44E7-BA8E-4C0116E5B09F}" Name="UserActivityTimeStamp"/>
    </FieldRefs>
  </ContentType>
</Elements>

在列表定义中将ref添加到内容类型

    <ContentTypes>
      <ContentTypeRef ID="0x0100c592d12a1dfa42ae8614d54f45118f83"/>
    </ContentTypes>
<ContentType ID="0x0100a2045db65601406a95f8f050642655b7"
               Name="MyContentType"
               Group="Custom Content Types"
               Description="Content Type Description"
               Inherits="FALSE"
               Version="0">
<FieldRefs>
     <!--removing the reference from the Title field-->
      <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" />

  ....

</FieldRefs>

“字段”部分不描述标题字段

<Fields>
      <Field ID="{b2fcba31-5888-4cb9-bcc8-7b1943161b40}" Name="UserActivityCreatedBy" Type="User" List="UserInfo" ShowField="Title" UserSelectionMode="0" UserSelectionScope="0" ReadOnlyEnforced="TRUE" Required="TRUE" DisplayName="Created By" StaticName="UserActivityCreatedBy" Group="User Activity Tracking"/>
      <Field ID="{b3f666f7-2da3-402c-a1a2-a6aa9f4e3e86}" Name="UserActivityType" Type="Choice" Format="Dropdown" FillInChoice="FALSE" DisplayName="Type" StaticName="UserActivityType" Group="User Activity Tracking">
        <Default>HttpRequest</Default>
        <CHOICES>
          <CHOICE>Login</CHOICE>
          <CHOICE>HttpRequest</CHOICE>
          <CHOICE>TermsOfUsageAcceptance</CHOICE>
        </CHOICES>
      </Field>
      <Field ID="{abf63cc0-6201-44e7-ba8e-4c0116e5b09f}" Name="UserActivityTimeStamp" Type="DateTime" Format="DateTime" StorageTZ="UTC" DisplayName="Time Stamp" StaticName="UserActivityTimeStamp" Group="User Activity Tracking"/>
    </Fields>

HttpRequest
登录
HttpRequest
使用验收条款
另外,不要忘记描述适当的视图-视野部分

        <ViewFields>
          <FieldRef Name="UserActivityCreatedBy" />
          <FieldRef Name="UserActivityType" />
          <FieldRef Name="UserActivityTimeStamp" />
        </ViewFields>

以下是适用于我们所有项目的方法:

在定义所有自定义内容类型的element.xml中,添加下一行以隐藏“Title”字段。确保具有相同的GUID,因为它是OOTB SharePoint标题字段:

<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" DisplayName="Title" Required="FALSE" Hidden="TRUE" />

属性Required=“FALSE”和Hidden=“TRUE”至关重要。这些行将在内容类型中工作

另一个修改是内容类型定义。它应该是这样的:

<ContentType ID="0x01005E47745D75A5422A9688FDCC0E6E855A"
               Name="Links"
               Group="YourGroup"
               Description="YouDescription
               Inherits="FALSE"
               Version="0">

这里提到的所有答案都经过了测试,但没有成功。经过多次调查和属性组合,我得出了以下答案

a。在每个
列表定义的
Elements.xml
文件上,确保

Inherits=“FALSE”

对于
内容类型

Hidden=“TRUE”Required=“FALSE”DisplayName=“\u Hidden”

对于“
标题
”字段 定义

<ContentType ID="0x01007F465964D8114436BD7D7CF2C2D8CF01" Name="Categories" Group="Category CT" Description="Category content type" Inherits="FALSE">
    <FieldRefs>
      <FieldRef ID="{BA7EBEF9-338B-45DE-9743-E394873060A7}"/>
      <FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Hidden="TRUE" Required="FALSE" DisplayName="_hidden" />
    </FieldRefs>
  </ContentType>


b。删除
schema.xml上
Title
字段的任何引用

这是我的内容类型

    <ContentTypes>
      <ContentTypeRef ID="0x0100c592d12a1dfa42ae8614d54f45118f83"/>
    </ContentTypes>
<ContentType ID="0x0100a2045db65601406a95f8f050642655b7"
               Name="MyContentType"
               Group="Custom Content Types"
               Description="Content Type Description"
               Inherits="FALSE"
               Version="0">
<FieldRefs>
     <!--removing the reference from the Title field-->
      <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" />

  ....

</FieldRefs>

....
这是我的Schema.xml部分,引用了我的内容类型。必须从schema.xml视图字段中删除标题字段

    <ContentTypes>
        <ContentTypeRef ID="0x0100a2045db65601406a95f8f050642655b7"/>
    </ContentTypes>

.....

    <View BaseViewID="1" Type="HTML" WebPartZoneID="Main" DisplayName="MyView" DefaultView="TRUE" MobileView="TRUE" MobileDefaultView="TRUE" SetupPath="pages\viewpage.aspx" ImageUrl="/_layouts/images/generic.png" Url="AllItems.aspx">
            <Toolbar Type="Standard" />
            <XslLink Default="TRUE">main.xsl</XslLink>
            <RowLimit Paged="TRUE">30</RowLimit>
            <ViewFields>
              <FieldRef Name="ID"></FieldRef>

              <!--Delete the reference below -->
              <FieldRef Name="LinkTitle"></FieldRef>

            </ViewFields>

.....

.....
main.xsl
30
.....

这对我来说很好!在我的列表中仍然有一个名为title的列,但是在我的内容类型中没有任何标题为“title”的列,所以它被隐藏在NeWFrm、EdtStand和VelpFrm页面中。

您可以考虑在事件接收器中使用一些代码:

    private void HideTitleFormField(SPList list)
    {
        SPContentTypeCollection listCTCollection = list.ContentTypes;

        foreach (SPContentType ct in listCTCollection)
        {
            SPFieldLinkCollection fieldLinks = ct.FieldLinks;

            //whilst we are here: hide the file name so it cant be edited.
            fieldLinks["Title"].Hidden = true;
            fieldLinks["Title"].Required = false;

            ct.Update();          
        }
    }

我也试过这个。关于删除内容类型,这将不会使列表能够通过LINQ访问Sharepoint,对吗?设置Inherits=“FALSE”有什么影响?最好的答案是,在找到此解决方案之前花了几天时间