0

我在 VS2010 中创建了一个列表架构定义和列表实例。我有一个同时部署列表定义和实例的功能,以及一个为每个新子站点激活新功能的功能订书机。

我的列表定义 schema.xml 是:

 <Fields>
  <Field Name="StartDate" Type="DateTime" Required="FALSE" DisplayName="Start Date" StaticName="StartDate" ID="9ea1256f-6b67-43b0-8ab7-1d643bf8a834" SourceID="http://schemas.microsoft.com/sharepoint/v3" ColName="datetime1" RowOrdinal="0" />
  <Field Name="EndDate" Type="DateTime" Required="FALSE" DisplayName="End Date" StaticName="EndDate" ID="900503fa-4ab1-4938-be75-b40694ab97b6" SourceID="http://schemas.microsoft.com/sharepoint/v3" ColName="datetime2" RowOrdinal="0" />

我成功部署并使用我的站点定义创建了一个新站点,列表成功创建,一切正常。

现在我想在我的列表中添加另一个字段,我回到 Visual Studio 2010 编辑列表定义 schema.xml 并在元数据字段部分添加另一个字段。

schema.xml 现在是:

    <Fields>
  <Field Name="StartDate" Type="DateTime" Required="FALSE" DisplayName="Start Date" StaticName="StartDate" ID="9ea1256f-6b67-43b0-8ab7-1d643bf8a834" SourceID="http://schemas.microsoft.com/sharepoint/v3" ColName="datetime1" RowOrdinal="0" />
  <Field Name="EndDate" Type="DateTime" Required="FALSE" DisplayName="End Date" StaticName="EndDate" ID="900503fa-4ab1-4938-be75-b40694ab97b6" SourceID="http://schemas.microsoft.com/sharepoint/v3" ColName="datetime2" RowOrdinal="0" />

  <!-- New Field -->

  <Field Name="TestRedeploy" Type="Text" Required="FALSE" DisplayName="TestRedeploy" StaticName="TestRedeploy"  RichText="True" Sortable="FALSE" ID="A5656659-CD3E-4C84-AEAC-554DCE25434B" SourceID="http://schemas.microsoft.com/sharepoint/v3" ColName="ntext3" RowOrdinal="0" />
</Fields>

我成功构建和部署,但是当我进入列表设置以检查是否添加了新列时,我发现所有列都已被删除。您能帮我弄清楚如何使用 schema.xml 部署新列吗?

4

1 回答 1

1

您应该尝试重新安装部署列表的功能

转到 sharepoint 2010 管理控制台并写入

install-spfeature -path "14'hive 中的功能文件夹名称" -force

在此之后进行 IISRESET 并重新加载页面。这应该足以使该字段可见。

顺便说一句,你永远不应该在你的 xml 中包含 colname 和 rowordinal 值。这些将在部署字段时由 sharepoint 自动提供。当前部署可能面临的一个问题是已经有一个列表字段映射到 colname="ntext3"。

于 2012-07-17T11:55:07.367 回答