Проблема с DisplayPattern в SharePoint 2010?
Я добавляю новое поле в список, используя метод 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 ответа
Эта ссылка предоставила большую помощь в решении этой проблемы:
В основном поля шаблонов отображения определяются в файле C:\Program Files\Common Files\Microsoft Shared\ Расширения веб-сервера \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>
Надеюсь, это поможет!
Смотрите мой блог на это здесь: http://www.threewill.com/2012/07/computed-fields-in-sp-2010/. Надеюсь, это проясняет, как сделать вычисляемые поля в SP2010.
Я запутался в том, что касается ссылки на эти статьи - обе они заявляют: "Два устаревших типа полей, поставляемых с SharePoint Foundation, не имеют типа DisplayPattern RenderPattern в FLDTYPES.XML: (1) поля ContentTypeId никогда не отображаются. (2) Вычисленные поля отображаются в представлениях списка и в режиме отображения с помощью элемента DisplayPattern в их элементах Field в schema.xml каждого списка, в котором они появляются."
Исходный вопрос четко определен как поле "Computed", которое согласно связанным статьям не использует fldttypes.xml для своего renderpattern, но вместо этого использует элемент DisplayPattern так же, как и исходный опубликованный вопрос. Было бы полезно опубликовать ссылки на то, как работает DisplayPattern в 2010 году - поскольку в документации четко указано, что он работает, но никогда не говорится, как это работает.
Этот метод настройки с 2007 года устарел из-за изменений в отображении полей в 2010 году. Прочитайте примечание от записи SDK на RenderPattern для более подробной информации:
Важный! В этом разделе описана разметка, которая использовалась в устаревшем методе рендеринга типов пользовательских полей в представлениях списков и в формах "Отображение", "Редактирование" и "Новая". Он предназначен исключительно для помощи людям, отлаживающим пользовательский тип поля, который был изначально разработан для более ранней версии SharePoint Foundation. Для получения информации о рекомендуемых методах см. Практическое руководство. Создание шаблонов визуализации полей и Практическое руководство. Создание пользовательского типа поля. Пользовательские поля, рендеринг которых определяется с помощью разметки RenderPattern, по-прежнему корректно отображаются в формах. Однако SharePoint Foundation по умолчанию использует таблицы стилей XSLT для отображения полей в представлениях списка, даже для устаревших настраиваемых полей, отображение представления списка которых определяется с помощью RenderPattern. Чтобы включить рендеринг такого поля, необходимо добавить элемент TRUE в содержащий элемент FieldTypes в файле определения типа поля (fldtype*.xml).