Проблема с DisplayPattern в SharePoint 2010? - PullRequest
3 голосов
/ 03 марта 2010

Я добавляю новое поле в список с помощью метода AddFieldAsXML объекта SPFieldCollection. Метод выполняется без проблем. И заголовок столбца появляется при просмотре списка; однако значение никогда не отображается в столбце. Вот как выглядит поле после того, как оно было добавлено в список. Этот 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 голосов
/ 04 марта 2010

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

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>

Надеюсь, это поможет!

1 голос
/ 18 июля 2012

Смотрите мой блог по этому вопросу здесь: http://www.threewill.com/2012/07/computed-fields-in-sp-2010/. Надеюсь, это прояснит, как сделать вычисляемые поля в SP2010.

1 голос
/ 26 июня 2012

Я запутался в том, что касается ссылки на эти статьи - обе они заявляют: «Два устаревших типа полей, поставляемых с SharePoint Foundation, не имеют тип DisplayPattern RenderPattern в FLDTYPES.XML: (1) никогда не видны. (2) Вычисляемые поля отображаются в представлениях списка и в режиме отображения с помощью элемента DisplayPattern в их элементах Field в schema.xml каждого списка, в котором они появляются. "

Исходный вопрос четко определен как поле «Computed», которое в соответствии со ссылками на статьи не использует fldttypes.xml для своего renderpattern, но вместо этого использует элемент DisplayPattern так же, как и исходный опубликованный вопрос. Было бы полезно опубликовать ссылки на то, как работает DisplayPattern в 2010 году - поскольку в документации четко указано, что он работает, но никогда не говорится, как.

0 голосов
/ 29 сентября 2010

Этот метод настройки с 2007 года устарел из-за изменений в рендеринге полей в 2010 году. Прочитайте примечание из записи SDK на RenderPattern для более подробной информации:

Внимание! В этом разделе описывается разметка, которая использовалась в устаревшем методе рендеринга типов пользовательских полей в представлениях списков и в формах «Отображение», «Редактирование» и «Новая». Он предназначен исключительно для помощи людям, отлаживающим пользовательский тип поля, который был изначально разработан для более ранней версии SharePoint Foundation. Для получения информации о рекомендуемых методах см. Как: создать шаблоны рендеринга полей и Как: создать пользовательский тип поля. Пользовательские поля, рендеринг которых определяется с помощью разметки RenderPattern, по-прежнему корректно отображаются в формах. Однако SharePoint Foundation по умолчанию использует таблицы стилей XSLT для отображения полей в представлениях списка, даже для устаревших настраиваемых полей, отображение представления списка которых определяется с помощью RenderPattern. Чтобы включить рендеринг такого поля, необходимо добавить элемент TRUE в содержащий его элемент FieldTypes в файле определения типа поля (fldtype * .xml).

...