3

我正在使用 SPFieldCollection 的 AddFieldAsXML 方法将新字段添加到列表中。该方法执行良好,没有问题。当我查看列表时会显示列标题;但是该值永远不会显示在列中。这是该字段添加到列表后的样子。此 xml 是从使用http://tw-s1-m4400-007:4016/_vti_bin/owssvr.dll?Cmd=ExportList&List= {1F87433F-50E1-46C5-A138-00E1CF7E5801}派生的列表架构中截取的

此代码在 2007 年运行良好,但在 2010 年不起作用。任何帮助将不胜感激。

<Field ID="{e24ccb96-35fd-44e5-b7d1-4150dbbc9a64}" Type="Computed" ReadOnly="TRUE"
   Name="My_x0020_Status" DisplayName="MyStatus" ShowInEditForm="TRUE" ClassInfo="Icon"   
AuthoringInfo="(My status)" SourceID="http://schemas.microsoft.com/sharepoint/v3"       
StaticName="MyStatus" FromBaseType="TRUE">  
 <FieldRefs>
  <FieldRef Name="ID" /> 
  <FieldRef Name="Title" /> 
 </FieldRefs>
 <DisplayPattern>
 <HTML>
 <![CDATA[ <a href="form.htm?ID="
  ]]> 
  </HTML>
  <Column Name="ID" /> 
 <HTML>
 <![CDATA[ ">
  ]]> 
  </HTML>
  <Column Name="Title" /> 
 <HTML>
 <![CDATA[ </a>
  ]]> 
  </HTML>
  </DisplayPattern>
</Field>
4

4 回答 4

2

此链接为解决此问题提供了很多帮助:

http://social.technet.microsoft.com/Forums/en/sharepoint2010customization/thread/ef0d1d22-47ff-416c-becd-13d48de80e4d

基本上,显示模式字段定义在 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\XSL\fldtypes.xsl 文件中。

有一个名为 fldtypes_ratings.xsl 的文件,您可以将其用作定义自定义字段显示的示例。

您可以创建自己的 xsl 文件(即 fldtypes_myfile.xsl)来定义自己的自定义显示。

这是我的内容示例:

<xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" 
xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" version="1.0" exclude-result-
prefixes="xsl msxsl ddwrt" ns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" 
xmlns:asp="http://schemas.microsoft.com/ASPNET/20" 
xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal">

<xsl:template match="FieldRef[@Name='MyCustomField']" mode="Computed_body">
    <xsl:param name="thisNode" select="."/>
      <SPAN class="mystuff-content-item" style="Width:100%;text-align:center">
          <SPAN class='mystuff-socialized-status mystuff-socialized-status-unknown'></SPAN>
          <SPAN class="mystuff-content-object-type" style="display:none">
               MyContent
          </SPAN>
          <SPAN class="mystuff-content-followed" style="display:none">0</SPAN>
          <SPAN class="mystuff-content-name" style="display:none"></SPAN>
          <SPAN class="mystuff-content-id" style="display:none">
            <xsl:value-of select="$List" />
            <xsl:text>|</xsl:text>
            <xsl:value-of select="$thisNode/@ID" />
          </SPAN>
      </SPAN>
    </xsl:template>

</xsl:stylesheet>

希望有帮助!

于 2010-03-04T20:19:39.043 回答
1

在此处查看我的博客:http ://www.threewill.com/2012/07/computed-fields-in-sp-2010/ 。希望这可以清楚地说明如何在 SP2010 中执行计算字段。

于 2012-07-18T13:28:25.647 回答
1

我对引用这些文章的观点感到困惑——它们都声明“SharePoint Foundation 附带的两个旧字段类型在 FLDTYPES.XML 中没有 RenderPattern 的 DisplayPattern 类型:(1) ContentTypeId 字段永远不可见。 (2) 计算字段在列表视图和显示模式下由它们出现的每个列表的 schema.xml 中的 Field 元素中的 DisplayPattern 元素呈现。”

原始问题明确定义为“计算”字段,根据链接的文章,不使用 fldttypes.xml 作为其渲染模式,而是使用 DisplayPattern 元素,就像发布的原始问题一样。发布有关 DisplayPattern 在 2010 年如何工作的参考资料会有所帮助——因为文档明确指出它确实有效,但从未说明如何工作。

于 2012-06-25T20:26:23.587 回答
0

这种从 2007 年开始的自定义方法因 2010 年字段渲染的变化而过时。阅读RenderPattern 上的 SDK 条目中的注释以获取更多详细信息:

重要的!本主题描述了在列表视图以及显示、编辑和新建表单上呈现自定义字段类型的现已过时的方法中使用的标记。它仅用于帮助调试最初针对早期版本的 SharePoint Foundation 开发的自定义字段类型的人员。有关推荐方法的信息,请参阅如何:创建字段呈现模板和如何:创建自定义字段类型。使用 RenderPattern 标记定义呈现的自定义字段仍可在表单上正确呈现。但是,默认情况下,SharePoint Foundation 使用 XSLT 样式表在列表视图上呈现字段,即使对于其列表视图呈现使用 RenderPattern 定义的旧自定义字段也是如此。要启用这样的字段的渲染,

于 2010-09-29T16:11:53.837 回答