我使用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>
答案 0 :(得分:2)
此链接为解决此问题提供了很多帮助:
基本上,显示模式字段在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 :(得分:1)
我对引用这些文章感到困惑 - 两者都说“SharePoint Foundation附带的两个遗留字段类型在FLDTYPES.XML中没有DisplayDattern类型的RenderPattern:(1)ContentTypeId字段是(2)计算字段在列表视图和显示模式下由DisplayPattern元素呈现在它们出现的每个列表的schema.xml中的Field元素中。“
原始问题被明确定义为“计算”字段,根据链接的文章不使用fldttypes.xml作为其renderpattern,但仍然使用DisplayPattern元素,就像发布的原始问题一样。这将有助于发布2010年DisplayPattern如何工作的引用 - 因为文档明确指出它确实有效,但从未说过如何。
答案 2 :(得分:1)
在此处查看我的博客:http://www.threewill.com/2012/07/computed-fields-in-sp-2010/。希望这能清楚说明如何在SP2010中进行计算字段。
答案 3 :(得分:0)
2010年的这种定制方法是通过2010年字段渲染的变化而得到满足的。请阅读SDK entry on RenderPattern中的说明以获取更多详细信息:
重要! 本主题描述了在列表视图和“显示”,“编辑”和“新建”表单上呈现自定义字段类型的现已过时方法中使用的标记。它仅用于帮助调试最初针对早期版本的SharePoint Foundation开发的自定义字段类型的人员。有关推荐方法的信息,请参见如何:创建字段渲染模板以及如何:创建自定义字段类型。 使用RenderPattern标记定义渲染的自定义字段仍可在表单上正确呈现。但是,默认情况下,SharePoint Foundation使用XSLT样式表在列表视图上呈现字段,即使对于使用RenderPattern定义列表视图呈现的旧自定义字段也是如此。要启用此类字段的呈现,必须将TRUE元素添加到字段类型定义文件(fldtype * .xml)中包含的FieldTypes元素中。