Проблема с 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 ответа

Эта ссылка предоставила большую помощь в решении этой проблемы:

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

В основном поля шаблонов отображения определяются в файле 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).

Другие вопросы по тегам