在SharePoint 2010中DisplayPattern存在问题?

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个回答

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>

希望有所帮助!

1

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

原始问题明确定义为“计算”字段,根据链接的文章,它们不使用fldttypes.xml进行renderpattern,而是像原始问题发布的那样使用DisplayPattern元素。发布有关DisplayPattern在2010年如何工作的参考资料将有所帮助 - 因为文档明确说明它可以工作,但从未说明如何操作。


1

0

2010年的字段渲染方式的变化使得2007年的自定义方法已经过时。请阅读RenderPattern SDK条目上的注释以获取更多详细信息:

重要提示! 本主题描述了在列表视图和显示、编辑和新建表单上呈现自定义字段类型的一种现已过时的标记。它仅提供给那些调试最初针对早期版本SharePoint Foundation开发的自定义字段类型的人员。有关推荐方法的信息,请参见“如何:创建字段呈现模板”和“如何:创建自定义字段类型”。 使用RenderPattern标记定义呈现的自定义字段仍然可以在表单上正确呈现。但是,即使对于使用RenderPattern定义列表视图呈现的旧版自定义字段,SharePoint Foundation默认也使用XSLT样式表来呈现字段。要启用此类字段的呈现,必须在字段类型定义文件(fldtype*.xml)中的包含FieldTypes元素中添加TRUE元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接